gpt4 book ai didi

java - 不同线程中的 Hibernate AssertionFailure

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:27 26 4
gpt4 key购买 nike

我通过一个 session 连接到我的数据库。在我的整个程序中,我总是有相同的 session 。我的线程“1”从数据库中捕获主要数据。必须允许用户取消此线程。因此,如果用户经常或快速按下取消按钮(这是我的解释),则会发生以下错误:

ERROR org.hibernate.AssertionFailure - HHH000099: an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session) 
org.hibernate.AssertionFailure: possible non-threadsafe access to the session

如果我在线程“1”完成后取消在后台运行的线程“2”并尝试从数据库加载另一个主数据集,则会发生相同的错误。

是我在我的两个线程中使用同一个 session 失败吗?

解决此类问题的正确方法是什么?

最佳答案

每个线程都应该从 Hibernate session 工厂获取自己的 session 。

It is not intended that implementors be threadsafe. Instead each thread/transaction should obtain its own instance from a SessionFactory.

参见此处:Hibernate Session JavaDoc

当你“取消”一个线程时——它应该做自己的清理,比如事务回滚、 session 关闭等。

关于java - 不同线程中的 Hibernate AssertionFailure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705700/

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