JAVA JPA谓词-在OR条件下检索相同的列值

时间:2019-01-23 15:21:33

标签: java jpa predicate

我正在尝试从表TABLE_A中检索数据,表Table_A包含列BB_NUM。

  • 我需要在JPA BooleanExpression中编写表达式,

  • 需要从JPA谓词逻辑生成以下SQL查询:

    **Select * from TABLE_A where BB_NUM like 'GA22'OR BB_NUM like 'GA33';**
    
  • 此GA22 GA33是动态产生的,因此在其中动态添加了条件。

  • 下面的代码编写了用于动态创建谓词表达式中where条件的代码,但是此代码不起作用,

        boolean firstTime = true;
        str = "GA22GA33";
        BooleanExpression ent = null;
                        for (String array : str.split("GA")) {
                            if (StringUtils.isNotBlank(array)) {
                                if (firstTime) {
                                    ent = qTABLE_A.BB_NUM.containsIgnoreCase("GA" + array.trim());
                                    firstTime = false;
                                } else {
                                    ent.or(qTABLE_A.BB_NUM.containsIgnoreCase("GA" + array.trim()));
                                }
                            }
                        }
                        expressions.add(ent);
    

以上代码的工作方式类似于SQL,

**Select * from TABLE_A where BB_NUM like 'GA22';**

需要工作

**Select * from TABLE_A where BB_NUM like 'GA22' or BB_NUM like 'GA33';**

1 个答案:

答案 0 :(得分:1)

尝试一下:

else {
    ent = ent.or(qTABLE_A.BB_NUM.containsIgnoreCase("GA" + array.trim()));
}

您还可以将if (firstTime)替换为if (ent == null)