我正在应用程序中使用的Java 1.6,JSF 2.0,JPA 2.0,Primefaces超过5.3在WebLogic Server 10.3.6过滤CriteriaQuery中JPA 2.0
我需要实现特定模块的懒惰数据表的负担,我不能使过滤器工作。
这是加载方法:
public List<T> load(int first, int pageSize, String sortField,
SortOrder sortOrder, Map<String, Object> filters) {
// TODO Auto-generated method stub
try {
List<T> list = new ArrayList<T>();
//Criteria Query
CriteriaBuilder cb = this.ejbUtils.getEntityManagerPrivate().getCriteriaBuilder();
CriteriaQuery<T> cq = cb.createQuery(entityClass);
//From
Root<T> from = cq.from(entityClass);
//Sort
if(sortField != null){
if(sortOrder == SortOrder.ASCENDING){
cq.orderBy(cb.asc(from.get(sortField)));
}else{
cq.orderBy(cb.desc(from.get(sortField)));
}
}
//Filters
if(!filters.isEmpty()){
List<Predicate> predicates = new ArrayList<Predicate>();
for (Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
String filterProperty = it.next();
Object filterValue = filters.get(filterProperty);
Expression<String> literal = cb.upper(cb.literal((String)filterProperty.toUpperCase()));
predicates.add(cb.like(literal, String.valueOf("%" + filterValue + "%").toUpperCase()));
}
cq.where(predicates.toArray(new Predicate[predicates.size()]));
}
Query q = this.ejbUtils.getEntityManagerPrivate().createQuery(cq);
list = q
.setFirstResult(first)
.setMaxResults(pageSize)
.getResultList();
this.setRowCount(this.ejbUtils.count());
return list;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
我看看日志的EclipseLink,并引发了我这个
[EL精细]:2016年7月15日11:15:35.415 - 的ServerSession (1294563329) - 连接(1645363733) - 线程(线程[[ACTIVE] ExecuteThread:'21'for队列:'weblogic.kernel.Default(self-tuning)',5,Pooled Threads]) - SELECT * FROM (SELECT/* + FIRST_ROWS/a。,ROWNUM rnum FROM(SELECT ID AS a1,ACTION AS a2,ACTIVA AS a3,FECHA_CREACION AS a4,FECHA_MODIFICACION AS a5,NOMBRE AS a6,USUARIO_CREACION AS a7,USUARIO_MODIFICACION AS a8,ID_PADRE AS a9从上面的SE_OPCIONES (?)LIKE?)a WHERE ROWNUM < =?)WHERE rnum>? bind => [NOMBRE,%ROL%,10,0]
然后当我在数据表中输入过滤器时永远不会带来结果。
几件事情更换
:我没有看到一个错误,而且从一个普通的Java类的查询工作与主(或单位测试) – Kukeltje