代码之家  ›  专栏  ›  技术社区  ›  robert trudel

使用fetch而不是join取消支持OperationException

  •  0
  • robert trudel  · 技术社区  · 6 年前

    我将spring boot 2与spring数据jpa和hibernate实现结合使用 我做一个自定义搜索

    public Page<Samples> advancedSearch(SamplesSearchDto search, Pageable page) {
            Specification<Samples> specification = genericAdvancedSearch(search);
    
            return this.findAll(specification, page);
        }
    

    我的一般高级搜索方法

    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查询的工作量。

    我试过根。取来但是得到

    JAVAlang.UnsupportedOperationException:在 JAVAutil。抽象收集。添加(AbstractCollection.java:262) [na:1.8.0131]at 组织。冬眠查询标准内部的标准构建模板。treat(CriteriaBuilderImpl.java:1400) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]at 组织。冬眠查询标准内部的标准构建模板。treat(CriteriaBuilderImpl.java:1113) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]at 通用域名格式。梅梅肯。lcm。存储库。示例repositoryimpl。lambda$General AdvancedSearch$39e4c45a$1(SampleRepositoryImpl.java:88) ~[main/:na]at 组织。springframework。数据jpa。存储库。支持简单的假设。ApplySpecificationCriteria(SimpleParepository.java:694) ~[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE] 组织。springframework。数据jpa。存储库。支持简单的假设。getQuery(SimpleParepository.java:625) ~[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE] 组织。springframework。数据jpa。存储库。支持简单的假设。getQuery(SimpleParepository.java:583) ~[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE] 组织。springframework。数据jpa。存储库。支持简单的假设。findAll(SimpleJpaRepository.java:386) ~[spring-data-jpa-2.1.5.RELEASE.jar:2.1.5.RELEASE]

    0 回复  |  直到 6 年前