我在我的存储库中使用 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
的方法,该方法旨在在多个地方重用。我想在三种场景中使用这个规范:
job
)对名为“John”的人进行分组以及每组的计数请注意,如果这些操作是可能的,我打算以这种方式大量使用规范。如果这是不可能的,我应该如何创建一些基本标准并在我的代码中重用它们?
@Ashkan 我有与你相同的用例。 你能告诉我你是如何解决这个问题的吗?