0

I have an entity with two column marked as java.util.Date, but the same columns are provided as timestamp in the table (oracle db).

@Column(name = "STD_DATT")
private Date stdDatt;

@Column(name = "ETA_DATT")
private Date etaDatt;

I am trying to query the table using criteria query as below :

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

This is not returning me expected output. Can anybody please suggest where i am going wrong.

Mujahid
  • 127
  • 1
  • 2
  • 10
  • Can you show DateUtils.addMinutes this method of yours. Also, please share what is expected output and what actually you are getting? – codeLover Jul 09 '18 at 06:47
  • You can also enable Hibernate SQL logging and check the generated query. You can even include the values for the bind variables. That makes it much easier to see what is going wrong. – ewramner Jul 09 '18 at 06:54

0 Answers0