JAVA JPA 谓词 - 在 OR 条件中检索相同的列值
JAVA JPA Predicate - Retrieve same column value in OR condition
我正在尝试从 Table TABLE_A、Table Table_A 中检索包含列 BB_NUM.
的数据
我需要在JPA BooleanExpression中写表达式,
需要生成以下 SQL 来自 JPA 谓词逻辑的查询:
**Select * from TABLE_A where BB_NUM like 'GA22'OR BB_NUM like 'GA33';**
而这个GA22 GA33是动态来的,所以这个where条件是动态添加的。
下面的代码写了在谓词表达式中动态创建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';**
试一试:
else {
ent = ent.or(qTABLE_A.BB_NUM.containsIgnoreCase("GA" + array.trim()));
}
您也可以将 if (firstTime)
替换为 if (ent == null)
我正在尝试从 Table TABLE_A、Table Table_A 中检索包含列 BB_NUM.
的数据我需要在JPA BooleanExpression中写表达式,
需要生成以下 SQL 来自 JPA 谓词逻辑的查询:
**Select * from TABLE_A where BB_NUM like 'GA22'OR BB_NUM like 'GA33';**
而这个GA22 GA33是动态来的,所以这个where条件是动态添加的。
下面的代码写了在谓词表达式中动态创建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';**
试一试:
else {
ent = ent.or(qTABLE_A.BB_NUM.containsIgnoreCase("GA" + array.trim()));
}
您也可以将 if (firstTime)
替换为 if (ent == null)