Concat 2列在何处-条件

时间:2019-01-10 17:59:46

标签: java hibernate jpa criteria criteria-api

我有一个类似此示例的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()));

如何实现此谓词?


任何想法?

1 个答案:

答案 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"));