6

このようなコードがあります。

 this.entityManager = AppFactory.instance().getEntityManagerFactory().createEntityManager();
 this.hibernateSession = entityManager.unwrap(Session.class);
 try{
 //do some queries using both entityManager and hibernateSession
 }finally{
 this.entityManager.close();
 }

しかし、どこかで接続リークがあるようです。entityManager と hibernateSession の両方を閉じるべきかどうか疑問に思っています。他の誰かがこの種の状況で働いたことがありますか?

4

2 に答える 2

1

Hibernateについてはわかりませんが、EclipseLinkでは、unwrapを介して接続を取得する前にトランザクションに参加する必要があると具体的に言っています:

http://wiki.eclipse.org/EclipseLink/Examples/JPA/EMAPI#JPA_2.0

だからこれを試してください:

entityManager.getTransaction.begin();
this.hibernateSession = entityManager.unwrap(Session.class);
...
entityManager.getTransaction.commit();
于 2013-04-10T21:39:40.480 に答える