Sebenarnya, Anda tidak dapat membandingkan hasil REGEXP_LIKE dengan apa pun kecuali dalam pernyataan bersyarat di PL/SQL.
Hibernate tampaknya tidak menerima fungsi khusus tanpa returnType, karena Anda selalu perlu membandingkan output dengan sesuatu, yaitu:
REGEXP_LIKE('bananas', 'a', 'i') = 1
Karena Oracle tidak mengizinkan Anda untuk membandingkan hasil fungsi ini dengan apa pun, saya menemukan solusi menggunakan kondisi kasus:
public class Oracle10gExtendedDialect extends Oracle10gDialect {
public Oracle10gExtendedDialect() {
super();
registerFunction(
"regexp_like", new SQLFunctionTemplate(StandardBasicTypes.BOOLEAN,
"(case when (regexp_like(?1, ?2, ?3)) then 1 else 0 end)")
);
}
}
Dan HQL Anda akan terlihat seperti ini:
REGEXP_LIKE('bananas', 'a', 'i') = 1
Ini akan berhasil :)