2017-05-04 53 views
0

我的代码片段:使用JPA标准API与模式选择

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销售。 获取打印的查询: select department0_.deptno as deptno0_,department0_.loc as loc0_,department0_.dname as dname0_ from mydept department0_ where department0_.dname like?逃生?使用

数据库是Oracle和JPA2.0供应商是EclipseLink的

+0

这条线打印什么? 'System.out.println(“区分大小写”+ deptPattern);' – user75ponic

+0

区分大小写销售^% – kakoli

+0

检查'resultlist'的大小,可能方法名称是'resultlist.getSize();' – user75ponic

回答

0

的分贝有项与名称销售,无需%。 而输入模式为'销售%'。我将其更改为'Sales',因为代码正在向输入添加'%'。 并且结果列表返回了两个条目。

+0

这是否意味着您正在正确或预期的结果? – user75ponic