JpaSpecificationExecutor :带有规范的复杂查询

2023-12-04

我实际上正在使用不同的过滤器进行研究。

当我使用 JpaRepository 进行简单查询时,我发现 JpaSpecificationExecutor 可以使用 Criterias 进行动态查询。

我的问题是我需要使用 group by 和 count() 创建一个复杂的查询。 对于分组来说没问题,但我不知道如何覆盖“选择”部分来放置“计数”指令。

有人可以帮助我吗?

我正在使用 spring 3.1.2 和 spring-jpa-data 1.0.3 这是我的代码:

return new Specification< Article >() {

    @Override
    public Predicate toPredicate(final Root<Article> root,
        final CriteriaQuery<?> query, final CriteriaBuilder builder) {
        //count ???
        query.groupBy(root.get(Article_.id));
        Predicate p = builder.and(builder.like(root.<String> get(Article_.title), "%" + title + "%"));

        return p;
    }
}

Thanks !


不幸的是你不能用 spring-data 规范来做到这一点。

你可以看到why and how在这里仍然使用 spring-data 来执行此操作(有一个简单的查询仅返回一个字段):spring-data 规范 - 返回 id 列表而不是对象

要获取字段列表,您可以使用 JPA Tuple。您可以在这里找到一个示例:JPA 和 Criteria API - 仅选择特定列

简洁版本:您需要创建一个自定义的 spring-data 存储库,它将使用CriteriaQuery<Tuple>.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JpaSpecificationExecutor :带有规范的复杂查询 的相关文章

随机推荐