Spring Data中的示例查询 - In子句?

6
根据Spring文档,我只能为QBE编写精确匹配。我需要仅在一组值中进行精确匹配(查询的IN子句)。
例如:
Person p = new Person();
p.setId(); // need to match among set of ids.
Example.of(p);

这是否可以通过QBE实现,或者我完全走错了方向?

类似于:

Page<S> findByIdIn(List<Integer> ids, Example<S> e, Pageable p)

两全其美?

我真正需要的是基于多个字段(可能组合,例如id在(1,2,4)中,状态为open,预约日期小于今天)的动态查询,以及分页和排序。 除了本地查询之外,规范是否是唯一的选择?

1个回答

7

我需要精确匹配,但是在一组值中进行(查询的IN子句)。

因此,您需要除了精确匹配之外的其他内容。您不可能将一组ID存储在Person的ID属性中。QBE显然不是这项工作的正确工具。

您可以使用规范、标准API直接查询、QueryDSL、动态组合的JPQL查询或其他解决方案,但不能使用QBE。


希望得到类似以下的内容: Page<S> findByIdIn(List<Integer> ids, Example<S> e, Pageable p) - Sachin Sharma
Spring Data文档 - 不允许使用非字符串值进行匹配(仅支持精确匹配)。 - Bogdan Oros
我将会编写规格说明。 - Sachin Sharma
3
您可以将示例转换为谓词,然后使用https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/convert/QueryByExamplePredicateBuilder.html将其与其他谓词组合。 - JB Nizet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接