我将spring boot 2与spring data jpa和hibernate实现一起使用 我进行自定义搜索
public Page<Samples> advancedSearch(SamplesSearchDto search, Pageable page) {
Specification<Samples> specification = genericAdvancedSearch(search);
return this.findAll(specification, page);
}
我的通用AdvancedSearch方法
Specification<Samples> specification = (Root<Samples> root, CriteriaQuery<?> cq, CriteriaBuilder cb) -> {
Predicate p = cb.conjunction();
Join<Samples, Samplings> samplings = (Join) root.join("sampling", JoinType.INNER);
...
return p;
};
return specification;
可以,但是我想使用fetch来减少谁完成的sql查询。
我尝试过root.fetch ...但是得到
java.lang.UnsupportedOperationException:在null java.util.AbstractCollection.add(AbstractCollection.java:262) 〜[na:1.8.0_131]在 org.hibernate.query.criteria.internal.CriteriaBuilderImpl.treat(CriteriaBuilderImpl.java:1400) 〜[hibernate-core-5.3.7.Final.jar:5.3.7.Final]在 org.hibernate.query.criteria.internal.CriteriaBuilderImpl.treat(CriteriaBuilderImpl.java:1113) 〜[hibernate-core-5.3.7.Final.jar:5.3.7.Final]在 com.mermacon.lcm.repository.SamplesRepositoryImpl.lambda $ genericAdvancedSearch $ 39e4c45a $ 1(SamplesRepositoryImpl.java:88) 〜[main /:na]在 org.springframework.data.jpa.repository.support.SimpleJpaRepository.applySpecificationToCriteria(SimpleJpaRepository.java:694) 〜[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE]在 org.springframework.data.jpa.repository.support.SimpleJpaRepository.getQuery(SimpleJpaRepository.java:625) 〜[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE]在 org.springframework.data.jpa.repository.support.SimpleJpaRepository.getQuery(SimpleJpaRepository.java:583) 〜[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE]在 org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:386) 〜[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE]