Java 为什么即使关闭EntityManager,我也可以´;你不能操纵数据库吗?
我创建Java 为什么即使关闭EntityManager,我也可以´;你不能操纵数据库吗?,java,hibernate,Java,Hibernate,我创建EntityManager,开始一个事务,提交它,然后关闭EntityManager。为什么我不能在应用程序运行时操作数据库(即使在关闭EntityManager连接em.close();)呢 我在单用户数据库方面也遇到过类似的问题。我怀疑问题在于实体管理器正在使用从连接池获取的JDBC连接,因此即使实体管理器已关闭,连接仍保持打开状态,并已返回到连接池供将来使用 建议允许对H2进行多次访问的一些可能性 或者,下载类似MySQL的东西怎么样?只需在行中添加auto\u server=tru
EntityManager
,开始一个事务,提交它,然后关闭EntityManager
。为什么我不能在应用程序运行时操作数据库(即使在关闭EntityManager
连接em.close();
)呢
我在单用户数据库方面也遇到过类似的问题。我怀疑问题在于实体管理器正在使用从连接池获取的JDBC连接,因此即使实体管理器已关闭,连接仍保持打开状态,并已返回到连接池供将来使用 建议允许对H2进行多次访问的一些可能性
或者,下载类似MySQL的东西怎么样?只需在行中添加
auto\u server=true
在persistence.xml文件和“voilá”中。它可以工作实际上应该打开EntityManager
来操作数据库。。。。您是否已将@Transactional
添加到进行数据库操作的方法中?您使用的是纯Java还是hibernate?请不要在评论中添加代码,编辑您的问题以澄清:您无法在应用程序之外操作数据库,即绕过内部连接池?@dhke,assfirm..这就是“操作数据库”的确切含义?如果您连接到一个合适的数据库服务器,那么即使在应用程序运行时,您也应该能够针对该服务器运行DML语句。您使用的是哪种数据库管理系统?你是如何联系的?
public void create(Product product) {
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();
em.persist(product);
em.getTransaction().commit();
em.close();
} finally {
if (em != null) {
em.close();
}
}
}