gpt4 book ai didi

在需要时 hibernate 强制获取惰性字段

转载 作者:行者123 更新时间:2023-12-04 04:36:40 26 4
gpt4 key购买 nike

我有一个实体,其字段与另一个标记为惰性的对象相关

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "fk_prs_insured")
public Person getInsured() {
return insured;
}

但是在jsp文件中,当它引用填充输入时,输入什么也没显示。
我怎样才能强制在需要的地方获取这个字段?

谢谢,

最佳答案

最简单的方法是从 @ManyToOne 中删除 Lazy 属性,默认情况下它通常是急切的,不像 @OneToMany 通常是惰性的。

在这种情况下,您当然有理由在默认情况下避免急切提取,因此您还可以通过指定一个提取提示来为这个特定用例启用急切提取,该提取提示您的查询加载了这个特定用例的实体。

见 15.5

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html

方法的一个问题是您最终可能会在代码中使用各种方法,例如 loadCustomer()、loadCustomerWithOrders() 等。

替代方法是使用 OpenSessionInView/OpenEntityManagerInView 模式,该模式将 Hibernate session 保持打开状态,直到您的 View 被呈现或使用值对象/DTOS。

我个人更喜欢使用 OSIV,一旦我发现任何性能问题,就会根据需要进行优化。

关于在需要时 hibernate 强制获取惰性字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19636023/

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