hibernate.transaction.auto_close_session设置为true时抛出“Session/EntityManager is closed”

2nc8po8w  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(200)

当我们将hibernate.transaction.auto_close_session设置为true时,它抛出java.lang.IllegalStateException:Session/EntityManager已关闭
我们正在使用hibernate 5.3.18.Final和spring 5.3.28版本。
当我们将hibernate.transaction.auto_close_session设置为false时,看不到上面的错误。然而,我们希望这个属性在我们的代码库中是真的。
请确认上述错误在哪个版本的hibernate中得到解决?还是可以忽略上述错误?
提前感谢。

stszievb

stszievb1#

hibernate.transaction.auto_close_session设置为true意味着会话将在事务完成时自动关闭。
如果会话已经关闭,然后调用EntityManager#close()Session#close(),它将抛出IllegalStateException。这没有什么害处,所以你可以简单地尝试捕捉它,让代码继续运行,而不是被它打断。
但更好的方法是在调用EntityManager#close()Session#close()之前使用EntityManager#isOpen()Session#isOpen()检查会话是否已经关闭。
例如:

if (entityManager.isOpen()){
  entityManager.close();
}

字符串

相关问题