休止状態の場合:
@PersistenceUnit(unitName = "oracle")
private EntityManagerFactory emf;
@Resource
private UserTransaction u;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
EntityManager em = emf.createEntityManager();
try {
u.begin();
em.persist(some entity);
u.commit();
} catch (Exception e) {
e.printStackTrace();
}
これはデータベースに何も書き込みません。EclipseLink に切り替えると、問題なく動作します。
私が使用する場合
EntityTransaction et = em.getTransaction();
休止状態の代わりにUserTransaction
DB に書き込みます。(つまり、EclipseLink のように、hibernate は JTA を認識しません)。
休止状態の何が問題になっていますか? (4.0.0-最終) ありがとう
編集:
最後の 2 つのプロパティを追加しました: (私はグラスフィッシュを使用しています)
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.SunONETransactionManagerLookup" />
</properties>
しかし、まだ機能しません