Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
Java Hibernate-如何加载多个关系的ID集合,而不使用惰性策略加载整个对象_Java_Spring_Hibernate_Jpa_Spring Data Jpa - Fatal编程技术网

Java Hibernate-如何加载多个关系的ID集合,而不使用惰性策略加载整个对象

Java Hibernate-如何加载多个关系的ID集合,而不使用惰性策略加载整个对象,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,我有一个JPA实体(组),其中有一个集合(设备)(多个关系)。对于组,有时我需要在设备集合完全加载的情况下,使用full对象运行FindAll。还有一次,我只需要运行一个加载组的FindAll,但是设备的集合应该只是一个id列表。我该怎么做?我正在使用带Spring数据和Hibernate的Spring Boot 设备: @实体 公共类设备{ @身份证 @访问权限(AccessType.PROPERTY) 私有字符串id; 私有字符串名称; ... } 组: @实体 公共课组{ @身份证

我有一个JPA实体(组),其中有一个集合(设备)(多个关系)。对于组,有时我需要在设备集合完全加载的情况下,使用full对象运行FindAll。还有一次,我只需要运行一个加载组的FindAll,但是设备的集合应该只是一个id列表。我该怎么做?我正在使用带Spring数据和Hibernate的Spring Boot

设备:


@实体
公共类设备{
@身份证
@访问权限(AccessType.PROPERTY)
私有字符串id;
私有字符串名称;
...
}
组:


@实体
公共课组{
@身份证
私有字符串id;
@ManyToMany(fetch=FetchType.LAZY)
@可接合(
name=“组\设备”,
joinColumns=@JoinColumn(name=“group_id”),
inverseJoinColumns=@JoinColumn(name=“device\u id”))
专用设备;
...
}
组存储库:

public interface ShortenRepository扩展了crudepository{
//这将返回组列表以及与每个组相关的设备列表
@查询(“从g组中选择g加入设备d”)
公共列表findAll();
//这将返回组列表和设备ID列表,而不是完整的设备对象。
//这个查询应该更快,因为Hibernate只需要检查内部表('group\u device')来获取设备ID
//而不是在设备表中获取整个设备信息。
@查询(“从g组中选择g加入设备d”)
公共列表findAllonlyDeviceId();

您不能将字段
私有设置设备
同时作为一组id和一组设备。这不起作用。您需要为纯id创建另一个字段确切地说,我想知道解决此问题的有效方法。添加纯id列表,这种方法在映射和查询方面如何工作?