Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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_Jpa - Fatal编程技术网

Hibernate 如何以编程方式确定是否应该加载惰性集合?

Hibernate 如何以编程方式确定是否应该加载惰性集合?,hibernate,jpa,Hibernate,Jpa,我不知道如何在这里描述我的问题 我有一个JPA注释实体,它由hibernate控制。我使用querydsl供电的回购协议来控制一些加载 在某些情况下,我们需要获取实体的某些字段,但在其他情况下则不需要。基本上,rest数据的请求者可以使用$expand参数来决定使用额外的集合来扩展原始数据 我的问题是,如果用户没有请求对实体的这些可扩展字段进行扩展,那么简单的延迟加载程序似乎不足以阻止加载这些字段。我们的一些逻辑自动运行在所有getter中并处理它们,因此它总是强制加载延迟加载的字段 我想知道是

我不知道如何在这里描述我的问题

我有一个JPA注释实体,它由hibernate控制。我使用querydsl供电的回购协议来控制一些加载

在某些情况下,我们需要获取实体的某些字段,但在其他情况下则不需要。基本上,rest数据的请求者可以使用$expand参数来决定使用额外的集合来扩展原始数据

我的问题是,如果用户没有请求对实体的这些可扩展字段进行扩展,那么简单的延迟加载程序似乎不足以阻止加载这些字段。我们的一些逻辑自动运行在所有getter中并处理它们,因此它总是强制加载延迟加载的字段


我想知道是否有一种方法可以通过编程方式打开或关闭我不想从后端延迟加载的字段,而不分离整个实体

也许这个建议并不完全符合您的期望,但是您可以设置这个选项(使用Hibernate):

@org.hibernate.annotations.LazyCollectionOption.EXTRA


使用此选项,所有内容都将设置为避免加载集合。它提供对集合大小的访问,而无需加载集合中的项目。

这就是EntityGraph的用途,是否尝试过?