Критерии гибернации Query, выборка на основе метки времени
У меня есть сущность с двумя столбцами, помеченными как java.util.Date, но в таблице указаны те же столбцы, что и для отметки времени (oracle db).
@Column(name = "STD_DATT")
private Date stdDatt;
@Column(name = "ETA_DATT")
private Date etaDatt;
Я пытаюсь запросить таблицу, используя критерии запроса, как показано ниже:
CriteriaBuilder builder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<Class1> query = builder.createQuery(Class1.class);
Root<Class2> root = query.from(Class2.class);
List<Predicate> predicateList = new ArrayList();
if (rule.getTimeInterval() != 0) {
Predicate etdNotNull = builder.isNotNull(root.get("etdDatt"));
Date timeInterval = DateUtils.addMinutes(new Date(), (int) rule.getTimeInterval());
Predicate etdEqualsOrlesser = builder.lessThanOrEqualTo(root.get("etdDatt"), timeInterval);
Predicate etd = builder.and(etdNotNull, etdEqualsOrlesser);
predicateList.add(etdEqualsOrlesser);
}
if(CollectionUtils.isNotEmpty(predicateList)) {
Predicate[] predicates = new Predicate[predicateList.size()];
predicateList.toArray(predicates);
query.where(builder.and(predicates));
}
getEntityManager().createQuery(query).getResultList();
Это не возвращает мне ожидаемый результат. Кто-нибудь может предложить, пожалуйста, где я иду не так.