Критерии гибернации 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();

Это не возвращает мне ожидаемый результат. Кто-нибудь может предложить, пожалуйста, где я иду не так.

0 ответов

Другие вопросы по тегам