javajpa检查两个日期之间的日期

vddsk6oq  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(475)

我使用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)
请帮忙

jtoj6r0c

jtoj6r0c1#

你的第一个论点 between 正在作为java文本传递,因此要在条件中使用它,需要将其转换为查询参数

builder.parameter(Date.class, "mydate")

或者将其转换为标准文本。

builder.literal(date)

但是你可以通过简单的查看javadocs来获得这个方法,并找出如何得到一个标准“表达式”

相关问题