我正在尝试从表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';**
答案 0 :(得分:1)
尝试一下:
else {
ent = ent.or(qTABLE_A.BB_NUM.containsIgnoreCase("GA" + array.trim()));
}
您还可以将if (firstTime)
替换为if (ent == null)