2
@PersistenceContext
(または@PersistenceUnit
)を使用して、jsf管理対象Beanにエンティティ・マネージャ(またはそのファクトリ)を注入できますか?管理対象Beanへのエンティティ・マネージャの挿入
私はそれを試しましたが、何もしなかった、私はNullPointerExceptionを取得します。
@PersistenceContext
(または@PersistenceUnit
)を使用して、jsf管理対象Beanにエンティティ・マネージャ(またはそのファクトリ)を注入できますか?管理対象Beanへのエンティティ・マネージャの挿入
私はそれを試しましたが、何もしなかった、私はNullPointerExceptionを取得します。
はい、可能です。これが構文です。
@PersistenceContext
EntityManager em;
プロジェクトにはpersistence.xmlが必要です。 Btw:Glassfish 3を実行しています。
この後、em.createNamedQueryのようなメソッドを使用できます。
また、注入はコンストラクタの後に行われるので、コンストラクタでデータベース関数を実行しようとすると機能しません。 @PostConstructアノテーションをメソッドに追加する必要があります。これはおそらくあなたの持つ問題です。
よろしくお願いいたします。私はコンストラクタでemを使用しました – Alf
JSFマネージドBeanにEntityManagerを挿入すると、EntityManagerはコンテナ管理のトランザクション(CMT)を使用しません。 Java EE 7までは、コンテナ管理のトランザクションを使用するEJBのみが使用され、Java EE 7では、非推奨のJSFマネージドBeanではなくCDI Beanに対してのみCMTが拡張されました。つまり、エラーが発生した場合、トランザクションはコンテナによってロールバックされません。管理する必要があります。 [リファレンス](http://stackoverflow.com/a/17842796/201891)および[リファレンス](https://stackoverflow.com/questions/8772175/how-to-implement-container-managed-transaction-cmt) – DavidS
5か月後、前回のコメントが真実であるかどうかはわかりません。私は決してそれをテストしなかった:私はちょうど私が読んだものから推測した。 : - \ – DavidS