0

我使用 openejb 作为我的独立容器来运行我的单元测试用例,在所有测试中的所有测试中,我都能够检索值但无法插入或更新。即使我尝试 entitymanager.merge(obj),它也会正确选择值,但不会更新它。

我是新手,所以请帮我解决这个错误

提前致谢

我的 persistence.xml 文件

 <persistence-unit name="test"
        transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>java:/OracleDS</jta-data-source>
.....entity classes.....
<properties>
            <property name="eclipselink.target-server" value="JBoss" />
            <property name="eclipselink.target-database" value="Oracle" />
            <property name="eclipselink.logging.level" value="FINE" />
            <property name="eclipselink.logging.parameters" value="true" />
        </properties>
    </persistence-unit>  

我的道法

tp.setname("van");
tp.settype("vehicle");
//entityManager.getTransaction().begin();
entityManager.merge(tp);
//entityManager.getTransaction().commit();
4

2 回答 2

0

执行以下操作

坚持新实体:

Transport tp = new Transport();
tp.setname("van");
tp.settype("vehicle");
entityManager.getTransaction().begin();  
entityManager.persist(tp);
entityManager.getTransaction().commit();

更新现有实体:

Query qry = entityManager.createQuery("Select t from 
                                       Transport t where t.type ='vechicle'");
List list = qry.getResultList();
//assume result return single entity
Transport tp = list.get(0);
tp.setInspectionDone(new Date()) ;
entityManager.getTransaction().begin();
entityManager.merge(tp);
entityManager.getTransaction().commit();
于 2013-01-21T09:55:43.867 回答
0

我认为您需要在类或方法中添加 @Transactional 注释

于 2013-08-30T06:48:21.253 回答