【问题标题】:Concat 2 columns in where condition - criteria在 where 条件 - 条件中连接 2 列
【发布时间】:2019-01-10 17:59:45
【问题描述】:

我有一个类似这个例子的 sql 查询:

从以下位置选择 TB1.A、TB1.B、TB2.C TB1 加入 TB2 哪里 TB1.A + TB2.C



我想为这个 SQL 条件创建一个 谓词... TB1.A + TB2.C

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

如何实现这个谓词?


有什么想法吗??

【问题讨论】:

  • 显然 JPA Criteria 使用字段而不是列(而且您还没有告诉我们这些字段被称为什么),所以可能在字段上使用 cb.concat ...

标签: java hibernate jpa criteria criteria-api


【解决方案1】:

如果 TB1.A 和 TB2.C 是数字(如 SQL 建议的那样),则可以按如下方式创建这样的谓词(tb2s 是似乎已用于 select 的连接):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    相关资源
    最近更新 更多