2

メソッドがあれば

public List<IrcEvent> getEventsByCriteria(IrcEventCriteria crit, boolean descending) {
    return getEventsByCriteria(crit, 0, Integer.MAX_VALUE, descending);
}

@JpaTransactional
public List<IrcEvent> getEventsByCriteria(IrcEventCriteria crit, int first, int count, boolean descending) {
     ...
}

次に、最初のメソッドにも @JpaTransactional アノテーションを付ける必要がありますよね?

Bean が独自のインターセプトされたメソッドを呼び出すと、インターセプターがトリガーされないことがわかりました。これは、呼び出されたプロキシではなく、「実際のインスタンス」自体であるため、プロキシを通過しないためだと思います。

これは仕様/ドキュメントでカバーされていますか? まだ見つかりませんでした。すべてのパブリック メソッドにアノテーションを付けた場合、今後インターセプターが複数回呼び出されないようにするためです。

4

2 に答える 2

1

仕様で見た記憶がありませんが、それがプロキシの仕組みです。とにかく、これはトランザクションの伝播に関連しています-既存の実行中のトランザクションでトランザクションメソッドを呼び出すと、新しいトランザクションを開始する必要があるかどうか。

Seam 3 永続化モジュールを取得します (トランザクション サポートあり)

于 2011-08-07T15:07:46.773 に答える
1

2 番目の「内部」呼び出しは、コンテキスト参照を介していないため、インターセプトされません。

于 2011-08-09T14:22:30.423 に答える