0

次のアノテーションが付けられた EJB があるとします。

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)

さらに、EntityManager注入されたものがあるとします。

@PersistenceContext
private EntityManager em;

でさまざまな操作を実行するEntityManagerと、そのような操作ごとにリソース ローカル トランザクションが開始され、コミットされますか? それとも、それらすべてに1つあるでしょうか?または、この動作は JPA 仕様で定義されていませんか? JPA 2.0 仕様にも EJB 3.1 仕様にも、適切な段落が見つかりませんでした。

EJB メソッドに対してJTAトランザクションが開始されないことは理解していますが、基礎となるEntityManager. 私は動作が未定義であると推測していますが、より大きな StackOverflow コミュニティの誰かがよりよく知っているか、仕様のこの領域、またはこの領域を扱った議論について洞察を持っていることを願っています.

4

2 に答える 2

0
于 2013-05-10T03:43:10.997 に答える
0

Nayan Wadekar が指摘したように、EntityManager にはトランザクションが関連付けられません。

あなたの例では、トランザクションスコープの EntityManager を指定しました(特に指定されていない場合はデフォルト値)。これは、アクティブなトランザクションを必要とするメソッドが、persistのように TransactionRequiredException をスローすることを意味します。

[Throws] TransactionRequiredException - if invoked on a container-managed entity manager of type PersistenceContextType.TRANSACTION and there is no transaction
于 2013-05-10T22:01:10.947 に答える