2013-10-10 7 views
5

が含まれています数字のみです。HQL機能は、私が露出するように少し問題がありました数だけ

HQLには存在しません.ISNUMERIC()関数はSql Serverのように、正規表現関数を適用する可能性があります。

SELECT C 
FROM CustomerDetail C 
WHERE C.code NOT LIKE '%A%' 
AND C.code NOT LIKE '%B%' 

ので、この状態全体的alfabetical文字や特殊文字を繰り返すことに:

可能な解決策は、次のようです。

は、私は、これはパフォーマンスの低レベル(LIKEの膨大な数)で、貧しいソリューションだと思う

、あなたは私にもっとスマートな解決策をアドバイスすることができますしてください?

ありがとう

P.S.私のアプリケーションはマルチDBMSなので、SQLクエリを使用することはできません。

答えて

1

メジャー編集: 間違ったHQL関数のためにちょうど正しく働いている関数isNumeric()が間違っています。 docによると、HQLはデータベーススカラー関数をサポートしています.SQLServer(これはテスト済みです)にはisNumeric()関数があります。

私は今、二つのオプションを参照してください。

オプション1: あなたはSQLServerの上ISNUMERIC(のような関数でビルドを利用して、異なるデータベース)ごとに異なるHQLsを書くことができます(それがライトバック」の面で大きな一歩だが

オプション2: SQLでカスタム関数に準拠させたいすべてのデータベースに対して、あなたの方言に同じ名前で登録します。

私は知っている、両方のオプションは素晴らしいではありませんが、私はそれを働かせる他の方法を考えることはできません。

+0

親愛なる、私の質問に書いたように、HQL hasNnを持っています –

+0

私の解決策を試しましたか( '= 1'を含む)?私の答えに書いたように、それは働く... –

+0

私は質問を書く前に...私は自分のコードを試してみます。これは、HQLの第14章です:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html許可された機能を表示する。 –

関連する問題