Concat 2 столбца, где условие - критерии - PullRequest
0 голосов
/ 10 января 2019

У меня есть SQL-запрос, как в этом примере:

ВЫБРАТЬ TB1.A, TB1.B, TB2.C ОТ TB1 JOIN TB2 ГДЕ TB1.A + TB2.C <= 10 </B>



Я хочу создать Предикат для этого условия SQL ... TB1.A + TB2.C <= 10 </b>

 List<Predicate> where = new ArrayList<>();
 where.add(super.cb().lessThanOrEqualTo(???????,dto.getDataVerificarQuebraAcordo()));

Как я могу реализовать этот предикат?


любые идеи ??

1 Ответ

0 голосов
/ 10 января 2019

Если 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"));
...