繁体   English   中英

JAVA JPA检查日期位于两个日期之间

[英]JAVA JPA Checking a date lies between two dates

我正在使用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并弄清楚如何获得“表达”条件就可以了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM