gpt4 book ai didi

javascript - Spring MVC 将带有延迟加载字段的 hibernate 对象返回给 AjaxResponseBuilder

转载 作者:行者123 更新时间:2023-12-03 12:08:35 25 4
gpt4 key购买 nike

假设我有一个 Person 对象:

 String name = "bob";
Int number = 3;
String lastName = ?

并且lastName 字段是通过Hibernate 延迟加载的。当我想要的时候

 AjaxResponseBuilder builder = AjaxResponseBuilder.success();
builder.addData("person", Person");

我收到 HibernateLazyLoad 异常,因为尚未获取姓氏。有没有办法可以传递对象的其余部分而不会出现此异常?到目前为止,我可以将 lastName 设置为 null 并传递对象就可以了,但这似乎是一种解决方法,而不是解决方案。

最佳答案

AjaxResponseBuilder 似乎想要访问 Person 对象的 lastName 字段(可能它只是遍历所有字段)。您有以下选择:

  1. 不要使字段变得惰性:将lazy="false"添加到.hbm(或相应的注释)

  2. 在将 person 对象传递给构建器之前初始化其字段:

    Hibernate.initialize(person);
  3. 在 web.xml 中添加 OpenSessionInViewFilter(如上所述):

    <filter>
    <filter-name>openSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
    </filter>

    <filter-mapping>
    <filter-name>openSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

如果 AjaxResponseBuilder 有某种配置告诉它在查找中省略 lastName 字段,那么这也应该有效。

关于javascript - Spring MVC 将带有延迟加载字段的 hibernate 对象返回给 AjaxResponseBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067124/

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