Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么即使关闭EntityManager,我也可以´;你不能操纵数据库吗?_Java_Hibernate - Fatal编程技术网

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