Id var not updated after persist
galrub Jan 12, 2008 8:43 AMhello 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