JAVA JPA Проверка даты лежит между двумя датами

0

Я использую 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)

Просьба помочь

  • 0
    Измените root.get("effFromDate") чтобы явно привести тип к root.<Date>get("effFromDate") для обоих входов
  • 0
    Возможный дубликат объектов сравнения даты в API критериев JPA
Показать ещё 2 комментария
Теги:
date
jpa
criteria-api

1 ответ

0

Ваш первый аргумент between передается как литерал Java, поэтому для использования в Criteria вам необходимо преобразовать его в параметр запроса

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

или преобразовать его в литерал Критерии.

builder.literal(date)

Но тогда вы могли бы получить это, просто посмотрев на javadocs для этого метода и разработав, как получить критерий "Expression",

Ещё вопросы

Сообщество Overcoder
Наверх
Меню