1

Entities、および のツリーがある状況がありSession Beanます。はSession Bean単にエンティティを永続化またはマージし、問題のメソッドは としてマークされ@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)ます。

外部キー違反や null 非許容フィールドの欠落などにより、子エンティティの永続化/マージに失敗した場合、トランザクションはログでロールバックされるようにマークされ、EJBExceptionスローされます。トランザクション全体がロールバックされることを期待していましたが、代わりに、子エンティティの障害にもかかわらず、EJB セッション Bean 呼び出しが返された後に親エンティティがデータベースに表示されています。

他の誰かがこのような行動を見たことがありますか? 追加情報:

Server: Glassfish
Persistence manager: Toplink
Connection Pool: DB2 Universal Driver XA compliant driver.

ありがとう。

4

1 に答える 1

2

Glassfish の接続プールは、「非トランザクション接続」フラグを有効にして設定されていたようです。これがロールバックの失敗の原因でした。

于 2009-10-19T14:13:55.197 に答える