jpa2.2.10 JpaSpecificationExecutor Specification 查询时,实体类中存在@OneToMany,怎么才能查询的时候忽略该@OneToMany的关联表?
时间: 2023-06-05 12:05:31 浏览: 150
可以使用JPA中的FetchMode来设置关联表的加载方式,将@OneToMany所标注的属性设置为LAZY,即可实现查询时忽略该关联表。具体实现方式可以参考如下代码:
```
public static Specification<MyEntity> mySpecification() {
return (root, criteriaQuery, criteriaBuilder) -> {
root.fetch("oneToOneAttribute", JoinType.LEFT);
root.fetch("oneToManyAttribute", JoinType.LEFT);
root.fetch("manyToOneAttribute", JoinType.LEFT);
root.fetch("manyToManyAttribute", JoinType.LEFT);
return null;
};
}
public List<MyEntity> find() {
return repository.findAll(mySpecification());
}
```
其中,mySpecification()方法中使用root.fetch()方法来设置要忽略的关联表的加载方式。例如,如果要忽略名为oneToManyAttribute的@OneToMany属性,只需将fetch方法的第一个参数设置为该属性即可。在find()方法中,调用findAll()并传入mySpecification(),即可查询出去除了指定关联表的实体对象列表。