web-dev-qa-db-ja.com

HQLHibernateで列の大文字と小文字を大文字に変更する方法

Likeを使用してHQLのキーワードをフィルタリングする前に、列をテーブルから大文字に変更したいのですが?

これが私の質問です

SELECT abc
FROM ABC abc
WHERE abc.id = ?
And upper(abc.description) like '%?%'

ありがとう

15
Gauls

HQLは、EJB3.0仕様でSELECTおよびWHERE句で定義されているupper()関数をサポートします。ドキュメントから:

14.10。式

  • .。
  • EJB-QL 3.0で定義されている関数または演算子:substring()trim()lower()upper()length()locate()abs()sqrt()bit_length()mod()
  • .。

したがって、以下が機能するはずです。

from DomesticCat cat where upper(cat.name) like 'FRI%'

参考文献

  • Hibernateコアリファレンスガイド
  • JPA1.0仕様
    • セクション4.6.16.1「文字列関数」
39
Pascal Thivent

私はHQLでサンプルクエリを書いています:

session.createQuery(from Certificate where lower(assignedTo)=:userName)
    .setString("userName",username);

前提条件:フィールドCertificateを持つassignedToという名前のテーブルが存在します。 sessionはHibernateセッションです。

0
baidya