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.