I am new to JPA
I am trying to query a table where my input date value should be between the startDate and endDate of the database record
I am trying to do:<
Try this:
criteriaBuilder.between(criteriaBuilder.literal(inputDate),
root.<Date>get("startDate"),
root.<Date>get("endDate"));
Something like this should work...
List<Predicate> conditionsList = new ArrayList<Predicate>();
Predicate onStart = criteriaBuilder.greaterThanOrEqualTo(root.get("startDate"), inputDate);
Predicate onEnd = criteriaBuilder.lessThanOrEqualTo(root.get("endDate"), inputDate);
conditionsList.add(onStart);
conditionsList.add(onEnd);
criteriaQuery.select(root).where(conditionsList.toArray(new Predicate[]{}));
You can try this way.
Predicate date = cb.between(root.get("date"), dateBefore, dateAfter); predicate.add(date);
this way works for my case.
But for your case (using ParameterExpression).
return entityManager.createQuery(query) .setParameter(d, currentDate, TemporalType.DATE).getResultList();
When you create the query you set parameters.
currentDate
is your date,
d
is ParameterExpression
that you create before.
I prefer the first way, it is more intuitive and logical for me.