5.10.4 アプリケーションサーバでJPAを使用するときの注意事項
アプリケーションが取得できるEntityManagerの型は,JPAプロバイダのEntityManagerオブジェクトではなく,アプリケーションサーバが提供するEntityManagerのプロキシクラスです。
EntityManagerオブジェクトは,インジェクション,JNDIルックアップ,またはEntityManagerFactoryで取得できます。
なお,インジェクションを使用してEntityManagerを取得する場合には,EntityManagerをインジェクトするフィールドまたはメソッド引数の型は,javax.persistence.EntityManagerにしてください。
また,インジェクション,JNDIルックアップ,またはEntityManagerFactoryで取得したEntityManagerは,JPAプロバイダのEntityManagerの実装クラスにキャストできません。
JPAプロバイダのEntityManagerオブジェクトを取得する必要がある場合は,インジェクション,JNDIルックアップ,またはEntityManagerFactoryで取得したEntityManagerプロキシオブジェクトのgetDelegateメソッド,もしくはEntityManagerプロキシオブジェクトのunwrapメソッドを使用してください。