Spring Data 如何在计数查询中重用规范?

问题描述 投票:0回答:1

我在我的存储库中使用 Spring Data,我希望能够结合简单的规范来构建复杂的查询。通过使用

Specifications
类并应用
and
or
辅助方法,然后调用接受
findAll
JpaSpecificationExecutor<T>
类的
Specification<T>
方法,这不是一项困难的任务。

主要问题是我想重用现有规范,而不是直接获取结果列表,而是将

count
聚合函数或
groupBy
聚合函数应用于规范,并将聚合函数的结果作为
Long 
结果或
List<Tuple>

为了更具体,我在这里举了一个简单的例子:

public Specification<Person> getByNameSpec(String name) {
    return (root, query, builder) -> {
        return builder.equal(root.get(Person_.firstName), name);
    };
}

在此示例中,我的

getByNameSpec
类中有一个名为
PersonServiceImpl
的方法,该方法旨在在多个地方重用。我想在三种场景中使用这个规范:

  1. 数一下名为“John”的人数
  2. 通过另一个字段(如
    job
    )对名为“John”的人进行分组以及每组的计数
  3. 仅选择一两个名为“John”的人字段

请注意,如果这些操作是可能的,我打算以这种方式大量使用规范。如果这是不可能的,我应该如何创建一些基本标准并在我的代码中重用它们?

java spring-boot spring-data-jpa spring-data
1个回答
0
投票

@Ashkan 我有与你相同的用例。 你能告诉我你是如何解决这个问题的吗?

© www.soinside.com 2019 - 2024. All rights reserved.