非ejbアプリケーションで次のコードを使用するにはどうすればよいですか。コードは機能します。JTA EntityManagerはgetTransaction()を使用できません
@Override
public void saveItems(Collection<T> items) {
synchronized (em) {
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
for (T item : items) {
saveItem_((Class<T>) null, item);
}
tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
}
}
}
新しいアプリケーションでは、私はEJB3 + JSFを使用しており、上記のコードを含むライブラリを再利用したいと考えています。
<persistence-unit name="myApp" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>MySQLConnection</jta-data-source>
</persistence-unit>
それがこの行に当たったとき、私の新しいアプリケーションが例外をスロー:新しいアプリケーションのための私のperistenceユニットは、次のようになります
EntityTransaction tx = em.getTransaction();
例外は次のとおりです。
A JTA EntityManager cannot use getTransaction()
はどれ十分にクリア。問題は、コンテナがトランザクションを管理するようにコードを変換する方法です。おそらく私の豆のメソッドは適切に注釈を付ける必要があります...質問はどうですか?
ここに解決策はありますか? – rtcarlson
@rtcarlsonなぜdownvoted&私は 'UserTransaction'インタフェースを使用する私の投稿をクリアしていない。 –
@downvoterあなたが説明できない、理解できない場合、理由なしでdownvoteしないでください。 –