我正在使用 JAVA JPA Criteria Builder 检查日期是否位于两个日期之间。我将日期传递到对表进行查询的函数中,并且该表有两个日期列。现在我想检查我已经通过的日期是否位于两者之间。
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: 没有找到合适的方法 (java.util.Date,javax.persistence.criteria.Path,javax.persistence.criteria.Path)
请帮忙
最佳答案
Between
的第一个参数作为 Java 文字传递,因此要在 Criteria 中使用它,您需要将其转换为查询参数
builder.parameter(Date.class, "mydate")
或将其转换为 Criteria 文字。
builder.literal(date)
但是您只需查看 javadocs 就可以得到它对于该方法并找出如何获得标准“表达式”
关于JAVA JPA 检查日期是否位于两个日期之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48334151/