Spring CrudRepository Queryを使用します。 「name」プロパティを持つ「DeviceType」エンティティを選択したい。ただし、次のクエリでは大文字と小文字を区別する方法で資格を選択します。大文字と小文字を区別しない方法。ありがとう。
public interface DeviceTypeRepository extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType> {
public Iterable<DeviceType> findByNameContaining(String name);
}
コメントで@Peterが言及したとおり、IgnoreCase
を追加するだけです。
public interface DeviceTypeRepository
extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType> {
public Iterable<DeviceType> findByNameContainingIgnoreCase(String name);
}
メソッド名内でサポートされているすべてのキーワードのリストについては、 documentation を参照してください。
次のSpringデータmongoクエリは、私のために機能します。 List
の代わりにIterator
を使用したい
public interface DeviceTypeRepository extends CrudRepository<DeviceType,Integer>, JpaSpecificationExecutor<DeviceType> {
List<DeviceType> findByNameIgnoreCase(String name);
}
私の場合、IgnoreCase
を追加してもまったく機能しませんでした。
正規表現のオプションも提供できることがわかりました:
@Query(value = "{'title': {$regex : ?0, $options: 'i'}}")
Foo findByTitleRegex(String regexString);
i
オプションは、大文字と小文字を区別しないクエリを作成します。
カスタムJPAクエリを使用する場合pperキーワードおよびtoUpperCaseが役立ちます。次のコードは私のために働く
return entityManager.createQuery("select q from "table " q where upper(q.applicant)=:applicant")
.setParameter("applicant",applicant.toUpperCase().trim()).getSingleResult();