2017-05-04 11 views
0

で私のコードスニペットを選択するために、JPA基準APIを使用した:DBはdnameの販売と2つのエントリを持っているのに対し、パターン

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は、何も返しません。 照会が印刷されます: 部門0を選択deptno0、部門0_.locをloc0_、部門0_.dnameをdname0_からmydept department0_ where department0_.dname like?エスケープ?使用

データベースは、Oracleで、JPA2.0のベンダーは、%なしで、DBは営業として名前のエントリを持っていたのEclipseLink

+0

この行は何を印刷しますか? '%system.out.println(大文字小文字を区別する" + deptPattern); ' – user75ponic

+0

大文字小文字の区別Sales%% – kakoli

+0

' resultlist'のサイズを調べてください。おそらくメソッド名は 'resultlist.getSize();' – user75ponic

答えて

0

です。 入力パターンは「Sales%」と指定されています。コードが '%'を入力に追加していたので、それを 'Sales'に変更しました。 結果リストに両方のエントリが返されました。

+0

です。正しいまたは期待される結果は? – user75ponic