我有一个类似此示例的sql查询:
从以下位置选择TB1.A,TB1.B,TB2.C TB1加入TB2 TB1.A + TB2.C <= 10
我想为此SQL条件创建一个谓词 ... TB1.A + TB2.C <= 10
List<Predicate> where = new ArrayList<>();
where.add(super.cb().lessThanOrEqualTo(???????,dto.getDataVerificarQuebraAcordo()));
如何实现此谓词?
任何想法?
答案 0 :(得分:0)
如果TB1.A和TB2.C是数字(如SQL所建议),则可以按如下方式创建这样的谓词(tb2s是似乎已经用于选择的联接):
Predicate p = cb.lessThanOrEqualTo(
cb.sum(root.get("a"),tb2s.get("c")),
cb.literal(10));
如果它们是字符串,则将它们连接起来并创建字符串文字表达式:
Predicate p2 = cb.lessThanOrEqualTo(
cb.concat(root.get("a"),tb2s.get("c")),
cb.literal("10"));