Сравнить объекты Date в API критериев JPA

Использование JPA 2 с реализацией EclipseLink.

Я пытаюсь создать динамический запрос, который должен предоставить мне некоторые записи, сохранившиеся после заданной даты.

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Event> criteria = builder.createQuery(Event.class);
Root<Event> root = criteria.from(Event.class);
criteria.select(root);
criteria.distinct(true);
List<Predicate> predicates = new ArrayList<Predicate>();
//...
if (dateLimit != null){
    ParameterExpression<Date> param = builder.parameter(Date.class, "dateLimit");
    predicates.add(builder.lessThanOrEqualTo(root.get("dateCreated"), param));
}

lessThanOrEqualTo () и le () - единственные два метода в API, которые, похоже, могут мне помочь в этом случае. Это предупреждение вызвано затмением:

Bound mismatch: The generic method lessThanOrEqualTo(Expression<? extends Y>, Expression<? extends Y>)
of type CriteriaBuilder is not applicable for the arguments (Path<Object>, ParameterExpression<Date>).
The inferred type Object is not a valid substitute for the bounded parameter
<Y extends Comparable<? super Y>>

Я могу представить, что я не использую правильный подход к этой проблеме, но я нигде не могу найти несколько советов или указателей для возможного решения.

44
задан Community 17 November 2013 в 06:29
поделиться