3

JPA と PostgreSQL を使用しています。CriteriaQuery を作成し、アクセントを考慮しないクエリを作成したいと考えています。

例: 文字 'a' を検索すると、データベースは値 'ã'、'a'、'á' などを返す必要があります。これはすべての文字で発生するはずです。

これは、変更したいコードの例です。この場合、大文字と小文字が区別されず、アクセントは区別されません。

    CriteriaBuilder qb = em.getCriteriaBuilder();
    CriteriaQuery query = qb.createQuery(Pessoa.class);

    Root<Pessoa> root = query.from(Pessoa.class);
    query.from(Pessoa.class);
    From from = root;

    Predicate predicate = qb.like(qb.lower(from.get("name")),
            "%" + name+ "%");
    query.where(predicate);
4

2 に答える 2

1

私は criteriaBuilder の機能を使用し、私が望むものを得ることができました。qb.like 関数で qb.function を呼び出しました。

私はこのようにしました:

Predicate predicate = qb.like(qb.function("unaccent",         
String.class,qb.lower(from.get("name"))),
"%" + removeAccents(name) + "%");
于 2015-10-21T18:45:01.210 に答える