1
我使用this方法使用規範帶查詢參數生成動態查詢。它工作正常。但通過這種方式,我可以使用簡單的.and()
或.or()
。彈簧數據:複雜的查詢與規範
我的問題是什麼是處理複雜查詢如where ((a & b)|(c & d) & (x))
具有動態輸入規範的最佳做法是什麼?
我使用this方法使用規範帶查詢參數生成動態查詢。它工作正常。但通過這種方式,我可以使用簡單的.and()
或.or()
。彈簧數據:複雜的查詢與規範
我的問題是什麼是處理複雜查詢如where ((a & b)|(c & d) & (x))
具有動態輸入規範的最佳做法是什麼?
如果你想生成動態查詢(如果你不知道你有多少元素在你或/和)爲最佳的解決方案是創建一些生成器類生成的查詢。例如:SpecificationBuilder從我的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")
)
);
}