当前位置: 首页 > 知识库问答 >
问题:

通过设置@BatchSize,显示相关实体的数据以避免延迟初始化异常

农均
2023-03-14

我有这样的实体

@Entity
@Table(...)
public class ENTITY_1 {

    //....
    private ENTITY_2 entity_2 ;
    private ENTITY_3 entity_3 ;
    private Set<ENTITY_3> entities_3 = new HashSet<ENTITY_3>(0); ;
    private ENTITY_4 entities_4 = new HashSet<ENTITY_4>(0); ;
    //...

我想在我的jsp中显示查询的结果,所以我用 fetch 发出请求来获取所有相关实体,以避免延迟初始化异常左连接 fetch

我的请求基于我的ENTITY_1(从ENTITY_1中选择 ..)

但是我使用分页,每页只有10个结果,所以读取会降低我的请求速度,所以我使用了< code>@BatchSize(size=10)。

我的问题是如何在我的jsp中显示相关实体的所有数据,因为我得到了懒惰的初始化异常。

我的 jsp 是这样的:

   ${entity_1_model.discription}
   //...
                <c:forEach var="entity_4" items="${entity_1_model.entities_4}">
                    <span class="">${entity_4.name}</span>
                </c:forEach> 

共有1个答案

宣俊豪
2023-03-14

最快和最简单的解决方案是在执行主查询后获取数据。试试这样的东西

page.content = query.offset(pageNumber*pageSize).limit(pageSize).list(ao);

for (Content cont : page.content) {
    Hibernate.initialize(cont.getEntities_4());
}
 类似资料:
  • 我在对象中使用Hibernate,即使会话未关闭,也会得到lazyinitializationexception。 以下是争议对象之间的关系。有3个对象: 目标A 对象B 对象C ObjectA包括ObjectB作为FetchType=EAGER ObjectB包括ObjectC作为FetchType=LAZY 我们正在获取ObjectA。因此,由于急切获取类型,它会自动获取ObjectB。但是当

  • 我正在开发一个Spring-MVC应用程序,其中我有3个类,组扫描,组节,组注释。组扫描器具有与组节的一对多映射,组节与组注释具有一对多映射。我正在尝试根据 GroupCanvas 的主键检索注释,但我收到Hibernate延迟初始化异常。我在网上尝试了这些建议,主要是SO,但似乎没有帮助。这是代码。 DAO 方法抛出错误: GroupCanvas模型: 组段模型类: 群注释: 错误日志: 我做错

  • 7.4.4 延迟初始化的bean 默认情况下,ApplicationContext实现在初始化过程中随即创建和配置所有单例bean。一般来说,这种预实例化是可取的,因为可以立即发现配置或周围环境中的错误,而不是在几个小时甚至几天以后。当这种行为不可取时,可以通过将bean定义标记为延迟初始化来阻止预实例化。延迟初始化的bean告诉IoC容器,当bean首次被请求时而不是在启动时创建一个实例。 在X

  • 我有maploader,它使用索引进行查询 > maploader 主 这个工作绝对精细的地图不会加载,直到我第一次接触地图。 但是当我为地图添加索引的时候,地图就会被加载,而不管是不是触摸地图。在Hazelcast文档中,MapStoreConfig类中的InitialLoadMode配置参数有两个值:LAZY和eager。如果InitialLoadMode设置为LAZY,则在映射创建期间不加载

  • 问题内容: 我想延迟控制器的初始化,直到从服务器收到必要的数据为止。 我找到了针对Angular1.0.1的解决方案:延迟AngularJS路由更改,直到加载模型以防止闪烁,但无法使其与Angular1.1.0一起使用 模板 ​ JavaScript http://jsfiddle.net/dTJ9N/1/ 问题答案: 由于$ http返回了promise,因此创建自己的deferred仅在htt

  • 问题内容: 这是一个非常广泛的枚举单例代码: 一堆地方说这是一个懒惰的初始化。但我很困惑我“读的第7章后,里面的Java虚拟机 ” -一个类型的生命周期: Java虚拟机规范在类和接口加载和链接的时间上为实现提供了灵活性,但严格定义了初始化的时间。所有实现都必须在首次使用时初始化每个类或接口。以下六种情况可作为有效使用: 将创建一个类的新实例(以字节码表示,一条新指令的执行。或者,通过隐式创建,反