【问题标题】:REST Query Language with Spring and JPA Criteria Date type具有 Spring 和 JPA 标准日期类型的 REST 查询语言
【发布时间】:2019-03-09 17:49:00
【问题描述】:

我正在使用以下代码通过 Criteria API 进行动态搜索

public List<User> findAllByParam(List<SearchCriteria> params) {
    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<User> query = builder.createQuery(User.class);
    Root<User> r = query.from(User.class);

    Predicate predicate = builder.conjunction();

    for (SearchCriteria param : params) {


        if (param.getOperation().equals(">")) {
            predicate = builder.and(predicate,
                    builder.greaterThan(r.get(param.getKey()),
                            param.getValue().toString()));
        } else if (param.getOperation().equals("<")) {
            predicate = builder.and(predicate,
                    builder.lessThan(r.get(param.getKey()),
                            param.getValue().toString()));
        } else if (param.getOperation().equals(":")) {
            predicate = builder.and(predicate,
                    builder.equal(r.get(param.getKey()), param.getValue()));
        }
    }
    query.where(predicate);

    List<User> result = entityManager.createQuery(query).getResultList();
    return result;
}

但是当我传递一个日期类型参数时,我得到了以下错误:

"Parameter value [1539122400000] did not match expected type [java.util.Date (n/a)]"

谁能告诉我一个处理日期的实现。谢谢

【问题讨论】:

标签: java date jpa jpa-criteria


【解决方案1】:

确保您没有将参数剥离为字符串。看看你是否可以避免使用 .toString()

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 2018-10-20
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多