2017-08-09 19 views
0

I次のhibernateクエリここハイバネートクエリの大文字小文字を区別するにはどうすればいいですか?

@NamedQuery(name = "findByName", query = "SELECT e FROM t=Table e WHERE e.name =:name") 

そして、私は、これは "NAME" から "名前" を差別化するパラメータ

uniqueResult(namedQuery("findByName").setString("name",name)); 

を設定する方法ですがありますか? setString()setParameter()に変更すると、setParameter()は大文字と小文字が区別されることが判明しましたか?

+0

デフォルトのクエリによって、大文字と小文字が区別されます。実際にこれを最初に実行しようとしましたか? – aorticDefiance

+0

ええsetStringは違いを認識しません。 –

+0

あなたは ':name'というパラメータ名を参照していますか?パラメータの実際の値ではありませんか? – aorticDefiance

答えて

0

これは、データベースと使用される照合順序によって大きく異なります。一部のデータベースの照合順序は、CIでは大文字と小文字が区別され、CSでは大文字と小文字が区別されます。たとえば、MySQL latin1_general_ciおよびlatin1_general_csです。

Hibernateはこの事実を認識せず、単純に標準WHERE節を実行して、データベースが設定されている動作を生成します。私の記憶に

https://dev.mysql.com/doc/refman/5.7/en/charset-mysql.html

https://msdn.microsoft.com/de-de/library/ms144250(v=sql.105).aspx

+0

は、他のSOの投稿でこのオプションを見つけました..しかし、私はまだこれをJPAの名前付きクエリで動作させる方法を知らない –

関連する問題