ステートレス セッション Bean (UserInfoService) が注入された SessionScoped マネージド Bean (UserInfoController) があります。
UserInfoController は UserInfoService を呼び出して、UserInfo レコードを更新します。UserInfoService は、適切な UserInfo レコードをロードして変更し、最後に em.flush() を呼び出します。
マネージド Bean の UserInfoController に CDI アノテーション (javax.enterprise.context.SessionScoped) のアノテーションが付けられている場合、ステートレス Bean のエンティティ マネージャーに PersistenceContextType.EXTENDED のアノテーションが付けられていない限り、ユーザー レコードは更新されません。
マネージド Bean が JSF アノテーション (javax.faces.bean.SessionScoped) でアノテーション付けされている場合、PersistenceContextType.TRANSACTION を使用すると、レコードが正常に更新されます。
誰でもこの動作を説明できますか? 呼び出し元が JSF または CDI SessionScoped マネージド Bean であるかどうかに関係なく、トランザクション境界は Stateless Bean に制限されるべきではありませんか? (TransactionAttributeType は定義されていません。デフォルトで REQUIRED に設定する必要があります)
どんな情報でも大歓迎です!ありがとう!ベン