gpt4 book ai didi

java - JPA - 关闭 EntityManagerFactory 引发异常

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:35 25 4
gpt4 key购买 nike

我目前正在开发一个带有内存 Derby 数据库的小型应用程序。我正在使用 Hibernate 4.3.10 和 JPA 2。这是我的小型演示应用程序的链接:http://1drv.ms/1KfCiHK

这段简短的代码会导致“java.sql.SQLException:事务仍处于 Activity 状态时无法关闭连接。”

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();

那么就不会引发异常,尽管它做了同样的事情!

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

最佳答案

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

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

关于java - JPA - 关闭 EntityManagerFactory 引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30676096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com