我使用this使用规范附带查询参数来生成动态查询的方法。它工作得很好。但通过这种方式,我可以使用简单的 .and()
或 .or()
。
我的问题是处理像 where ((a & b)|(c & d) & (x))
这样具有动态输入规范的复杂查询的最佳实践是什么?
最佳答案
如果您想生成动态查询(如果您不知道 or/and 中将有多少元素),最好的解决方案是创建一些用于生成查询的构建器类。例如:SpecificationBuilder来 self 的github。
当您知道您将拥有多少个元素时,我建议您使用规范,例如(仅示例):
(root, query, builder) -> {
return builder.and(
builder.equal(root.get("id"), "1"),
builder.equal(root.get("name"), "name"),
builder.or(
builder.equal(root.get("id"), "2"),
builder.equal(root.get("name"), "enam")
)
);
}
关于java - Spring 数据 : Complicated queries with Specification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42607857/