0
特定のエンティティマネージャ(TRANSACTION_SERIALIZABLE
など)に関連付けられた接続のトランザクション分離レベルを設定しようとしています。エンティティマネージャを使用してトランザクション分離レベルを設定するJava JPA
私は解決策のためにインターネットを精査し、いくつかを見つけました。しかし、どれもうまくいかないようです。
私は次の操作を実行しよう:
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("BankingPU");
public EntityManager em = emfactory.createEntityManager();
java.sql.Connection connection = (java.sql.Connection) em.getDelegate();
connection.setTransactionIsolation(TRANSACTION_SERIALIZABLE);
私は次の例外を取得:私は
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("BankingPU");
public EntityManager em = emfactory.createEntityManager();
java.sql.Connection connection = em.unwrap(java.sql.Connection.class);
を行うと
Exception in thread "main" java.lang.ClassCastException:
org.eclipse.persistence.internal.jpa.EntityManagerImpl cannot be cast to java.sql.Connection
connection
に格納された値はnull
です。
私は、詳細を調べるために、以下を実行しました:
Object obj = em.getDelegate();
をobj
に保存されているクラスタイプがorg.eclipse.persistence.internal.jpa.EntityManagerImpl
編集です:
(おっと、私は例外からのことを言ったことができると思います)EDIT2:
私は呼び出すことで(私は思う)セッションを取得するために管理しています
Session session = ((EntityManagerImpl) em).getSession();
ただし、connection()
もDoWork()
も存在しません。
これをフォローアップしてトランザクションの分離レベルを設定する方法はありますか?
私は解決策を発見した
あなたは何を投稿すると、他のJPA実装には全く役に立たないので、あなたは一見、HIBERNATEを使用しているので、この「答え」がないことを言及するつもりだしJPAに対する回答ですが、HIBERNATEの明示的な回答のみ –