JPA - 关闭EntityManagerFactory引发异常

时间:2015-06-05 21:27:12

标签: java hibernate jpa derby

我目前正在使用内存德比数据库开发一个小应用程序。我正在使用Hibernate 4.3.10和JPA 2.以下是我的小型演示应用程序的链接:in the docs

此短代码导致“java.sql.SQLException:在事务仍处于活动状态时无法关闭连接。”

EntityManagerFactory emf = Persistence.createEntityManagerFactory(null);
EntityManager em = emf.createEntityManager();

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<MyEntity> query = cb.createQuery(MyEntity.class);
em.createQuery(query.select(query.from(MyEntity.class))).getResultList();

em.close();
emf.close(); // Here the exception is raised!

所以,即使我不需要任何交易并且没有启动任何交易,也有一些事情开始了吗?!

如果我用这个

替换三个查询行

em.createQuery(“从MyEntity m中选择m”,MyEntity.class).getResultList();

然后没有引发任何异常,虽然它也在做同样的事情!

我做错了什么,或者这是期望的行为?

1 个答案:

答案 0 :(得分:0)

您需要持久性单元的名称,名称位于persistence.xml文件中。

EntityManagerFactory emf = Persistence.createEntityManagerFactory("name of the persistence unit");