Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在需要时休眠强制获取惰性字段_Hibernate_Lazy Evaluation - Fatal编程技术网

Hibernate 在需要时休眠强制获取惰性字段

Hibernate 在需要时休眠强制获取惰性字段,hibernate,lazy-evaluation,Hibernate,Lazy Evaluation,我有一个实体,其字段与另一个标记为lazy的对象相关 @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "fk_prs_insured") public Person getInsured() { return insured; } 但在jsp文件中,当它引用来填充输入时,输入并没有显示任何内容。 我怎样才能强制在需要的地方获取此字段 谢谢,最简单的方法

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

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "fk_prs_insured")
    public Person getInsured() {
        return insured;
    }
但在jsp文件中,当它引用来填充输入时,输入并没有显示任何内容。 我怎样才能强制在需要的地方获取此字段


谢谢,

最简单的方法是从@ManyToOne中删除Lazy属性,默认情况下,这些属性通常是渴望的,而@OneToMany通常是懒惰的

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

见15.5

这种方法的一个问题是,代码中可能会出现各种方法,如loadCustomer()、loadCustomerWithOrders()等

另一种方法是使用OpenSessionInView/OpenEntityManagerView模式,该模式将保持Hibernate会话打开,直到视图被渲染为止,或者使用值对象/DTO

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