JPA 2.0 基準を使用して、次のクエリを作成しています (簡略化)。
select n from notif n where n.message ~ 'b.*la'
私はpostgresql dbを使用していますが、〜演算子が本当に必要です。私が使用できる CriteriaBuilder.function に相当するものはありますか? または、postgres に ~ 演算子の関数形式があるので、前述の cb.function メソッドを使用できます。postgresql regexp_matches 関数しか見つかりませんでしたが、ブール値ではなく一致の配列を返します。
解決策: 基準 API から JPQL への移行は問題外だったので、postgres 関数を作成することになりました。
'CREATE OR REPLACE FUNCTION "regexp_search"(character varying,character varying) RETURNS boolean AS \'select $1 ~ $2;\' LANGUAGE sql;'
そしてそれを cb.function で呼び出します:
Expression<Boolean> regexp_search = cb.function("regexp_search", Boolean.class, message,cb.literal(re));