我使用javajpacriteriabuilder来检查一个日期是否介于两个日期之间。我将日期传递到函数中,该函数对一个表进行查询,该表有两个dates列。现在我想检查一下我通过的日期是否介于两者之间。
private CorpClientsCommRateD getCorpClientsCommRateD(Date date) {
CorpClientsCommRateD commissionRate=null;
try {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<CorpClientsCommRateD> query = builder.createQuery(CorpClientsCommRateD.class);
Root<CorpClientsCommRateD> root = query.from(CorpClientsCommRateD.class);
List<Predicate> conditions = new ArrayList();
conditions.add(builder.between(date,root.get("effFromDate"),root.get("effToDate")));
query.select(root)
.where(conditions.toArray(new Predicate[]{}));
TypedQuery<CorpClientsCommRateD> commissionRates = em.createQuery(query);
commissionRate=commissionRates.getSingleResult();
}
catch(Exception exp)
{
return commissionRate;
}
return commissionRate;
}
我得到了一个错误,这个错误:(148,35)java:没有为between找到合适的方法(java.util.date,javax.persistence.criteria.path,javax.persistence.criteria.path)
请帮忙
1条答案
按热度按时间jtoj6r0c1#
你的第一个论点
between
正在作为java文本传递,因此要在条件中使用它,需要将其转换为查询参数或者将其转换为标准文本。
但是你可以通过简单的查看javadocs来获得这个方法,并找出如何得到一个标准“表达式”