[英]Spring Data : Complicated queries with Specification
我使用此方法使用規范附帶查詢參數來生成動態查詢。 它工作正常。 但是通過這種方式,我可以使用簡單的.and()
或.or()
。
我的問題是處理復雜查詢的最佳實踐是什么,例如where ((a & b)|(c & d) & (x))
帶有動態輸入的規范?
如果要生成動態查詢(如果您不知道將在/或中使用多少元素),那么最佳解決方案是創建一些構建器類以生成查詢。 例如:來自我的github的SpecificationBuilder 。
當你知道你將擁有多少元素時,我建議你使用規范(僅舉例):
(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")
)
);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.