将Hibernate Criteria Query转换为JPA 2 Criteria Query

Sky*_*han 2 session hibernate criteria-api criteriaquery jpa-2.0

我有以下Hibernate 3.x Criteria Query,我想将它转换为Hibernate JPA 2.0查询:

Calendar calLo = new GregorianCalendar();
calLo.set(Calendar.HOUR_OF_DAY, 00);
calLo.set(Calendar.MINUTE, 00);
calLo.set(Calendar.SECOND, 00);
Calendar calHi = new GregorianCalendar();
calHi.set(Calendar.HOUR_OF_DAY, 23);
calHi.set(Calendar.MINUTE, 59);
calHi.set(Calendar.SECOND, 00);

List taskList = session.createCriteria(Task.class, "task").add(Restrictions.ge("task.taskDate", calLo.getTime())).add(Restrictions.le("task.taskDate", calHi.getTime())).add(Restrictions.eq("task.taskActive", true)).addOrder(Order.desc("task.taskNo")).list();
Run Code Online (Sandbox Code Playgroud)

我尝试重新开始代码,例如:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(Task.class);
Root task = cq.from(Task.class);
cq.select(task).where(cb.ge("task.taskDate", calLo.getTime()) ... );
Run Code Online (Sandbox Code Playgroud)

但JPA 2标准查询似乎不支持CriteriaBuilder.ge(...)方法接受日期或日历作为输入参数,我的代码似乎从一开始就失败了.

我需要建议来保留和调整Hibernate会话标准的功能.

JB *_*zet 5

正如javadoc所示,该ge()方法适用于数字.使用greaterThanOrEqualTo(),它接受任何Comparable.