みなさん、こんにちは。次の問題について助けを求めています。完全に機能するjpa / stateless ejbのプロジェクトがあり、単純なクエリと永続化操作を実行するだけですが、永続化操作のセットを実行する必要があります。それらは失敗します。ロールバックを実行する必要があるため、JTAがその仕事を実行できることがわかりましたが、このソースコードを使用しています。
@Stateless
public class ProjectBean implements IProject {
@Resource
javax.transaction.UserTransaction utx;
@PersistenceContext(unitName = "JPADB")
private EntityManager entityManager;
...
//more code
//this is part of a method
try{
utx.begin();
entityManager.joinTransaction();
for(Project p:projectResultList){
entityManager.persist(p);
}
utx.commit();
}catch(Exception e){
e.printStackTrace();
if(utx != null)
try {
utx.rollback();
} catch (IllegalStateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SecurityException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SystemException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//tx.rollback();
}
単に機能しません。persistence.xmlは次のようになります。
<persistence-unit name="JPADB">
<jta-data-source>java:jboss/datasources/OracleBic</jta-data-source>
<properties>
<property name="hibernate.show_sql" value ="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
</properties>
</persistence-unit>
誰かが私にヒントやアドバイスをくれることを本当に願っています、私はjpa / jtaの概念の初心者であり、Webで見つけた多くのコードを試しましたが、常に異なるエラーが発生します(スレッドの間違ったtx:予期されるTransactionImple usertransaction begin、Cannot JTAの使用中にEntityTransactionを使用します)。前もって感謝します。