[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - Id var not updated after persist

galrub do-not-reply at jboss.com
Sat Jan 12 08:44:06 EST 2008


hello all, using jboss 4.2.2 (red-hat developer studio) and mysql 5;

after doing persist the Id retrun null... here is the code:

1st, the table in DB:
 
  | create table test (
  | 	ID int(10) NOT NULL auto_increment,
  | 	NAME VARCHAR(15),
  | 	PRIMARY KEY (ID)
  | ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  | 

the -ds.xml

  | <datasources>
  |   <local-tx-datasource>
  |     <jndi-name>work.datasource</jndi-name>
  |     <connection-url>jdbc:mysql://localhost:3306/work</connection-url>
  |     <driver-class>com.mysql.jdbc.Driver</driver-class>
  |     <user-name>un</user-name>
  |     <password>pw</password>
  |     <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
  |     <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
  |     <metadata>
  |        <type-mapping>mySQL</type-mapping>
  |     </metadata>
  |   </local-tx-datasource>
  | </datasources>
  | 

the persistence.xml 

  | <?xml version="1.0" encoding="UTF-8"?>
  | <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" ...............
  | <persistence-unit name="tester" transaction-type="JTA">
  | 		<jta-data-source>java:/work.datasource</jta-data-source>
  | 		<properties>
  | 			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
  | 			<property name="hibernate.show_sql" value="true"/>
  | 		</properties>
  | 	</persistence-unit>
  | </persistence>
  | 
the entity, manager, end tester EJB's:

  | @Entity
  | @Table(name = "test")
  | public class TestEntity implements Serializable
  | {
  | 	@Id
  | 	@Column(name = "id")
  | 	@GeneratedValue
  | 	private Integer someId;
  | 	
  | 	@Column(name = "name")
  | 	private String someName;
  | 
  | 	getters/Setters.......
  | 
  |         public String toString()
  | 	{
  | 		return "id = " + someId + ", Name = " + someName; 
  | 	}
  | }
  | 
  | public @Stateless class TestManagerBean implements TestManager
  | {
  | 	private String GET_BY_ID_EJBQL = "SELECT x FROM TestEntity x WHERE x.id = ?";
  | 
  | 	@PersistenceContext(unitName="tester")
  | 	private EntityManager manager;
  | 
  | 	public void create(TestEntity test)
  | 	{
  | 		manager.persist(test);
  | 	}
  | 
  | 	public TestEntity getById(Integer id)
  | 	{
  | 		return (TestEntity) manager.createQuery(
  | 				GET_BY_ID_EJBQL).setParameter(1, id).getSingleResult();
  | 	}
  | 
  | }
  | 
  | public @Stateless class RunTestBean implements RunTest
  | {
  | 	
  | 	@EJB private TestManager manager;
  | 	
  | 	public void test()
  | 	{
  | 		TestEntity testEntity = new TestEntity();
  | 		testEntity.setSomeName("abcd");
  | 		manager.create(testEntity);
  | 		System.out.println("return = " + testEntity);
  | 	}
  | 
  | }
  | 
  | 

there is also a standalone the looks up "RunTestBean/remote"
and execute test().

the output print out is:
15:12:00,852 INFO  [STDOUT] return = id = null, Name = abcd

can anyone tell me how to "persuade" the container to kindly update the id
from the table (the persist works, got a new line in table!).

Thanks in advance 


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4119327#4119327

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4119327



More information about the jboss-user mailing list