2013-06-24 16 views
5

Come creare query senza distinzione tra maiuscole e minuscole senza utilizzo di metamodelli?JPA 2 Condizioni critiche dell'API di Criteria API senza utilizzo del metamodello

sto cercando di fare qualcosa di simile:

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())); 

Ma la produzione di errore:

method upper in interface javax.persistence.criteria.CriteriaBuilder cannot be applied to given types; [ERROR] required: javax.persistence.criteria.Expression [ERROR] found: javax.persistence.criteria.Path

risposta

4

provare

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

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

sembra che metodo ha alcuni problemi con superiore accettando il percorso

4

Questo dovrebbe compilare:

...builder.upper(personRoot.<String>get("firstName"))... 
Problemi correlati