java - session 在 ExecutorService 内部时关闭

标签 java session jdbc

当我尝试在 myExecutor.execute(new Runnable() ...) 中调用 session.createSQLQuery() 时,出现异常:

SessionException: Session is closed!

为什么 session 在ExecutorService.execute期间关闭?

我必须在execute中创建一个新的entityManager吗?

ExecutorService executor = newSingleThreadExecutor();
executor.execute(new Runnable()
    {
        @Override
        public void run()
        {
            Session session = (Session) entityManager.getDelegate();
            SQLQuery query = session.createSQLQuery("SELECT * FROM function()");
        }
    }

最佳答案

通常,每个线程都有自己的 session 。 ExecutorService 有自己的线程,因此您需要在 run() 方法中管理执行程序线程内的实体管理器、 session 和事务。

关于java - session 在 ExecutorService 内部时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27365403/

相关文章:

java - MySQL从存储引擎读取自增值失败

java - neo4j 需要比预期更多的空间

java - T 的使用扩展了 U?

PHP 在我的购物车上每页只显示 2 件商品

PHP MYSQL - 使用 SESSION 更新用户配置文件

asp.net - 为什么我的 asp.net 应用程序会在我删除文件夹时回收?

java - 使用 JDBC 连接到 MS SQLServer 时发生 ClassNotFoundException

java - SQL 语法错误 - 在此结果集中未找到列名?

JavaParser 读取 src 目录

java - java servlet 的动态表大小