コンテナ管理トランザクション> 次に、トランザクションポリシーも追加する必要があります:
@Stateful
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=REQUIRED)
私はこの現象を2つの状況でしか見たことがありません:
-
DataSource
は自動コミットモードで実行されているため、各ステートメントは個別のトランザクションで実行されます -
EntityManager
@Transactional
で構成されていません 、ただし、DML操作ではトランザクションが必要な例外がスローされるため、クエリのみを実行できます。
次のHibernateプロパティを設定したことを要約します。
hibernate.current_session_context_class=JTA
transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
jta.UserTransaction=java:comp/UserTransaction
最終的なプロパティは、Application ServerUserTransactionJNDIネーミングキーで設定する必要があります。
次を使用することもできます:
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup
または、現在のJavaEEアプリケーションサーバーに応じたその他の戦略。