Язык запросов REST с критериями Spring и JPA Date - PullRequest
0 голосов
/ 04 октября 2018

Я использую следующий код для динамического поиска по 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;
}

, но когда я передаю параметр типа Date, я получаю следующую ошибку:

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

CanКто-нибудь, пожалуйста, покажите мне реализацию для обработки дат.Спасибо

1 Ответ

0 голосов
/ 04 октября 2018

Убедитесь, что вы не урезали свой параметр до строки.Посмотрите, сможете ли вы избежать использования .toString ()

...