2013-06-24 3 views
5

メタモデルを使用しない大文字と小文字を区別しないCriteria Queryの作成方法は?JPA 2メタモデル使用のないCriteria APIの大文字と小文字を区別しない条件

私はこのような何かやろうとしている:

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

をしかし、それはエラーを生成:

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

答えて

4

方法は、上でいくつかの問題を抱えていることのように思える

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

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

を試しを受付パス

4

これはコンパイルする必要があります:

...builder.upper(personRoot.<String>get("firstName"))... 
関連する問題