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

标签 java mysql date jpa criteria-api

我正在使用 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/

相关文章:

python - 获取与同一个表中的父元素相关的子元素

datetime - 日期的格式是否取决于用户的区域设置和日历系统?

java - apache commons FileUtils.copyFile 错误系统资源不足,无法完成请求

sql - SELECT set of most recent id, amount FROM table,其中id出现多次

java - 在 View 旁边显示带有自定义数字键盘的弹出窗口

mysql - 从 UserDSN 或 ODBC 文件创建 "Workbook.Connections("MyDBx").ODBCConnection"

javascript - 使用 Javascript 将数据库日期转换为短日期

java - 使用 Java 1.6 接收包含 ISO 8601 格式日期的字符串的 ParseException

java - 提取以美元符号为前缀的大括号内占位符的内容

java - javac 命令是否自动创建包声明中指定的目录?