gpt4 book ai didi

java - Hibernate 返回设置为 EAGER 的对象的代理

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:27 24 4
gpt4 key购买 nike

我们正在使用我们开发的一组网络服务。

其中一项服务使用 JPA 映射从某些表中检索信息。 Hibernate 返回一个对象并且它按预期工作。

其他服务检索一个非常相似的对象,并且它返回一个代理而不是读取对象。提取设置为 EAGER,所以我真的不明白为什么会发生这种情况。我们尝试了多种方法将代理转换为真实数据(我知道这是不必要的,因为它设置为 EAGER),但代理没有得到转换。

我们正在使用 hibernate 3.5.4-final,以防万一。

我真的不知道从哪里开始,有什么提示吗?

@Entity
public class Foo1
{
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL)
private List<Foo2> list = new ArrayList<Foo2>();
}

@Entity
public class Foo2
{
@ManyToOne(fetch = FetchType.EAGER)
private Foo3 obj;
}

要检索我们调用的数据:

entityManager.find(Foo1.class, id);       

我的一个想法是,也许 Hibernate 正在管理内部异常,这就是为什么我得到代理而不是真实对象?

编辑这是与该问题相关的 Hibernate 配置:

<property name="hibernate.max_fetch_depth" value="0"/>
<property name="hibernate.default_batch_fetch_size" value="16"/>
<property name="hibernate.jdbc.batch_size" value="16"/>

最佳答案

我们修复了调用 entityManager.unProxy 的问题,但仍然感觉不对劲,因为它应该已经取消代理,因为映射设置为 EAGER。

关于java - Hibernate 返回设置为 EAGER 的对象的代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36279231/

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