Преобразование запроса критериев гибернации в запрос критериев JPA 2 - PullRequest
2 голосов
/ 16 марта 2012

У меня есть следующий запрос критериев Hibernate 3.x, который я хочу преобразовать в запрос 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();

Я пытаюсь переписать код, начинающийся как:

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()) ... );

Но запросы критериев JPA 2, похоже, не поддерживают метод CriteriaBuilder.ge (...) для приема дат или календарей в качестве входных параметров, и мой код, похоже, не работает с самого начала.

Мне нужносоветы по сохранению и адаптации функциональности критериев сеанса Hibernate.

1 Ответ

5 голосов
/ 16 марта 2012

Как указано в javadoc , метод ge() предназначен для чисел. Используйте HigherThanOrEqualTo () , который принимает любые Comparable.

...