使用JPA条件API选择模式

时间:2017-05-04 18:04:28

标签: java jpa-2.0

我的代码段:

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

1 个答案:

答案 0 :(得分:0)

db的条目名称为Sales,不含%。 输入模式以“Sales%”的形式给出。我将其更改为“Sales”,因为代码在输入中添加了'%'。 结果列表返回了两个条目。