JPA の CriteriaBuilder の ignoreCase

JPAの条件ビルダーで、ignorecaseは、大文字小文字を無視するオプションです。条件ビルダーを使って問合せ条件を作成する際には、ignorecaseメソッドを使ってプロパティ値の大文字小文字を無視できます。

たとえば、Userというエンティティクラスがあり、nameという属性がある場合、「John」という値に一致するユーザーを検索したい場合は、大文字と小文字を区別せずに検索できます。これを実現するには、ignorecaseメソッドを使用します。

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<User> criteriaQuery = criteriaBuilder.createQuery(User.class);
Root<User> root = criteriaQuery.from(User.class);
// 创建条件构建器
Predicate predicate = criteriaBuilder.equal(criteriaBuilder.lower(root.get("name")), "john");
// 忽略大小写
predicate = criteriaBuilder.ignoreCase(predicate);
// 添加条件到查询
criteriaQuery.where(predicate);
// 执行查询
List<User> users = entityManager.createQuery(criteriaQuery).getResultList();

上記のコードでは、name属性の値をcriteriaBuilder.lowerメソッドを使用して小文字に変換し、equalメソッドで等価条件を作成しています。そして、ignoreCaseメソッドを使用して大文字化の有無を無視し、最後に条件を問合せに追加して、問合せを実行しています。

ignorecaseメソッドを利用することで、クエリの属性値の大小を無視し、大文字小文字を区別しない条件検索を実現できます。

bannerAds