Я использую весеннюю загрузку 2 с весенними данными jpa и реализацией спящего режима Я делаю пользовательский поиск
public Page<Samples> advancedSearch(SamplesSearchDto search, Pageable page) {
Specification<Samples> specification = genericAdvancedSearch(search);
return this.findAll(specification, page);
}
Мой метод genericAdvancedSearch
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;
это работает, но я хотел бы использовать выборку, чтобы уменьшить SQL-запрос, который выполнен.
Я пробовал root.fetch... но получаю
java.lang.UnsupportedOperationException: null at java.util.AbstractCollection.add(AbstractCollection.java:262) ~[na:1.8.0_131] at org.hibernate.query.criteria.internal.CriteriaBuilderImpl.treat(CriteriaBuilderImpl.java:1400) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final] at org.hibernate.query.criteria.internal.CriteriaBuilderImpl.treat(CriteriaBuilderImpl.java:1113) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final] at com.mermacon.lcm.repository.SamplesRepositoryImpl.lambda$genericAdvancedSearch$39e4c45a$1(SamplesRepositoryImpl.java:88) ~[main/:na] at org.springframework.data.jpa.repository.support.SimpleJpaRepository.applySpecificationToCriteria(SimpleJpaRepository.java:694) ~[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.springframework.data.jpa.repository.support.SimpleJpaRepository.getQuery(SimpleJpaRepository.java:625) ~[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.springframework.data.jpa.repository.support.SimpleJpaRepository.getQuery(SimpleJpaRepository.java:583) ~[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE] at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:386) ~[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE]
вроде написано: root.join работает root.fetch не работает.
вставьте весь код genericAdvancedSearch





вы также должны показать код, который не работает.