0

次の 2 行のコードが与えられます。

entityManager.find(MyEntity.class, myId);

((Session) getEntityManager().getDelegate()).load(MyEntity.class, myId);

最初の命令は正常に機能しますが、2 番目の命令は org.hibernate.SessionException: Session is closed! をスローします。何か案が ?

コンテキスト:春のバッチ3.0.6 /休止状態3.5.0

情報: EntityManager が注入されました:

@PersistenceContext
protected EntityManager entityManager;

更新 1

セッションがnullの場合(EntityManagerImpl.getRawSession内)、新しいセッションを開くthis.getSession()への呼び出しがfindメソッドで確認できます

更新 2

2 番目の状況では、getSession メソッドは呼び出されませんが、セッションを閉じる SharedEntityManagerCreator と呼ばれるクラスです。

if(isNewEm) {
  EntityManagerFactoryUtils.closeEntityManager(target1);
}
4

1 に答える 1