首页 > 解决方案 > Hibernate CriteriaQuery,基于时间戳获取

问题描述

我有一个带有两列标记为 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();

这没有返回我预期的输出。任何人都可以请建议我哪里出错了。

标签: oraclehibernate-criteriapredicatecriteriaquery

解决方案


推荐阅读