Состояние API JPA 2 Criteria нечувствительно к регистру без использования метамодели

Как создать запрос критериев без учета регистра без использования метамодели?

Я пытаюсь сделать что-то вроде этого:

   CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Resident> criteria = builder.createQuery(Resident.class);
    Root<Resident> personRoot = criteria.from(Resident.class);

    criteria.where(builder.and(
            builder.equal(builder.upper(personRoot.get("firstName")), filter.getFirstName())),  //ERROR
            builder.equal(personRoot.get("lastName"), filter.getLastName()));

Но выдает ошибку:

метод выше в интерфейсе javax.persistence.criteria.CriteriaBuilder не может быть применен к данным типам; [ОШИБКА] требуется: javax.persistence.criteria.Expression [ОШИБКА] найдено: javax.persistence.criteria.Path


person kostepanych    schedule 24.06.2013    source источник


Ответы (2)


пытаться

Expression<String>  firstName = personRoot.get("firstName");

criteria.where(builder.and(
            builder.equal(builder.upper(firstName ), filter.getFirstName())),   
            builder.equal(personRoot.get("lastName"), filter.getLastName()));

похоже, что у верхнего метода есть некоторые проблемы с принятием пути

person user902383    schedule 24.06.2013

Это должно скомпилироваться:

...builder.upper(personRoot.<String>get("firstName"))...
person Stefan    schedule 04.12.2013