2012-03-16 25 views
3

私はJPA(Hibernate)を永続性レイヤーとして使用しています。JPQLで正規表現を適用するには?

正規表現に基づいてWHERE句を追加する必要があります。 このようなパターンはSELECT * FROM TableNameです(REGEXP_LIKE(ColumnName、 'Pattern'))。私が結果から得られるのは文字列のリストですが、文字列ではなくオブジェクトとしてDBからマッピングされたエンティティを取得する必要があります。

わたしの知るところでは、JPQLは結果をオブジェクトとして返すことができますが、JPQLは正規表現をサポートしていないようです。これはOracleのプロンプト拡張です。

正規表現をJPQLに適用するにはどうすればよいですか。

+1

これは、あなたの質問への答えかもしれません: http://stackoverflow.com/questions/8985205/does-eclipselink-support-queries-containing-regular-expressionあなたはネイティブのクエリを使用する必要があります – heldt

+1

。 – ManuPK

答えて

0

JPQLには完全な正規表現はありませんが、パターン値があります。仕様JPQL 2.2 (p. 188)によれば:

pattern_valueは、文字列リテラルまたは下線(_)は任意の単一文字を表し、パーセント(%)文字は文字の任意のシーケンスを表している文字列値の入力パラメータであります(空のシーケンスを含む)、他のすべての文字はそれ自身を表します。

[...]

例:

  • address.phone LIKE '12%3' '1234' 123 ' '12993' 偽にも当てはまる'

  • asentence.word LIKE 'l_se'は 'loose'にはtrue、 'loose'にはfalseです。

  • aword.underscored LIKE '_%' ESCAPE '\'は '_foo'に該当し、

  • はaddress.phone '12%3' を好まない 'バー' の偽は、1234 ' 'のために、真の' 12993 123の偽の '' と'

あなたは、より高度な場合ネイティブクエリを使用するために必要な正規表現構文

関連する問題