[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