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 に答える