我正在维护现有代码,并且我找到了以下代码来初始化一些惰性集合。
user.getListOne().size()
user.getListTwo().size()
user.getListThree().size()
它运作良好,但问题是顺序的,我想我可以将它并行化。
我尝试创建自己的线程,但是我收到了警告,所以我想用自己的线程做这个是不可能的:
错误org.hibernate.AssertionFailure - HHH000099:断言失败 发生(这可能表示Hibernate中存在错误,但更有可能是因为 不安全地使用会话)org.hibernate.AssertionFailure: 可能的非线程安全访问会话
有没有办法使用JPA / Hibernate并行初始化集合?
答案 0 :(得分:2)
你做不到。 EntityManager不是线程安全的,因此在您的并行'期间不应该从多个线程访问它。初始化,EM是负责这些列表的人口。
您可以使用查询提示或实体图表在对象检索期间强制急切加载集合。