简体   繁体   English

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

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

I am using JAVA JPA Criteria Builder to check a whether a date lies between two dates or not. 我正在使用JAVA JPA Criteria Builder检查日期是否介于两个日期之间。 I am passing the date into the function which is having a query on a table and that table have two dates columns. 我将日期传递给在一个表上进行查询的函数,并且该表有两个日期列。 Now i want to check the date which i have passed lies between the two or not. 现在我想检查我经过的日期是否介于两者之间。

 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;
}

I am getting a error that Error:(148, 35) java: no suitable method found for between(java.util.Date,javax.persistence.criteria.Path,javax.persistence.criteria.Path) 我收到一个错误消息,错误:(148,35)java:在之间找不到合适的方法(java.util.Date,javax.persistence.criteria.Path,javax.persistence.criteria.Path)

Kindly help 请帮助

Your first argument to between is being passed as a Java literal, so to use that in Criteria you need to convert it to either a query parameter between第一个参数将作为Java文字传递,因此要在Criteria中使用该参数,您需要将其转换为查询参数

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

or convert it to a Criteria literal. 或将其转换为Criteria标准。

builder.literal(date)

But then you could have got that by simply looking at the javadocs for that method and working out how to get a Criteria "Expression" 但是,您只需查看该方法的javadocs并弄清楚如何获得“表达”条件就可以了

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

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