gpt4 book ai didi

java - hibernate 、惰性行为和多个 session

转载 作者:行者123 更新时间:2023-12-02 11:38:09 26 4
gpt4 key购买 nike

假设我有一个 Post 类,它有一个 PostComment 集合,并且我加载 Post。 PostComment 设置了lazy="true",因此PostComment 现在由Hibernate 代理表示。

如果我在 session 中加载Post,我们将其称为session1,然后在访问PostComment之前关闭session1,如何从稍后打开的第二个 session 访问PostComment ?

我尝试从 session2 访问 PostComment,但得到了 LazyInizializationException,我相信要启用延迟加载,打开一个 session 就足够了,而不是加载父对象的同一个 session 。

我应该使用 session2.update() 将对象附加到 session2 吗?整个过程中除了使用同一个session还有其他方法吗?

最佳答案

您可以按照帖子中所述将对象重新附加到新 session ,也可以使用 FetchType.EAGER 作为提取类型来禁用延迟初始化,即:

@OneToMany(fetch = FetchType.EAGER)
private Map<String, Attribute> attributes = new HashMap<String, Attribute>();

有关延迟获取和急切获取之间差异的更多信息,请参阅这篇文章:Difference between FetchType LAZY and EAGER in Java Persistence API?

关于java - hibernate 、惰性行为和多个 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48776122/

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