我的代码段:
criteriaQuery.select(root);
Predicate ctfPredicate;
if (deptPattern.contains("%") || deptPattern.contains("_")) {
deptPattern = deptPattern.replaceAll("%", "^%").replaceAll("_", "^_");
}
System.out.println("case sensitive " +deptPattern);
ctfPredicate = criteriaBuilder.like((Expression)root.get("name"), "%" + deptPattern + "%", '^');
criteriaQuery.where(criteriaBuilder.and(ctfPredicate));
TypedQuery<Object> typedQuery = entitymanager.createQuery(criteriaQuery);
List<Object> resultlist = typedQuery.getResultList();
printResult(resultlist);
resultList不返回任何内容,而db有2个带dname Sales的条目。 查询打印: 选择department0_.deptno为deptno0_,department0_.loc为loc0_,department0_.dname为dname0_来自mydept department0_其中department0_.dname如何?逃避?
使用的数据库是Oracle,JPA2.0供应商是EclipseLink
答案 0 :(得分:0)
db的条目名称为Sales,不含%。 输入模式以“Sales%”的形式给出。我将其更改为“Sales”,因为代码在输入中添加了'%'。 结果列表返回了两个条目。