2011-12-26 5 views
3

私は休止状態を使用しています。私は大文字と小文字を区別しない検索をしたい。以下のように。基準を使ってhibernateで大文字小文字を区別しない検索を行う方法は?

criteria.add(Restrictions.eq("id", id).ignoreCase()); 

ただし、以下の場合も同じですか?

criteria.add(Restrictions.in("name", names)); //ここにnamesはリストのです。

ここでは大文字と小文字を区別しないで名前を検索する方法はありますか?

助けてください。

ありがとうございます!

答えて

4

あなた自身で新しい式(CaseInsensitiveInExpression)を書く必要があります。出発点としてorg.hibernate.criterion.InExpressionのコードを使用し、生成されたSQL句は

lower(theColumnName) in (?, ?, ?) 

のようなものであると、クエリに渡された値が(ないorg.hibernate.criterion.ILikeExpressionのような)toLowerCase()を通過した元の値になるように、それを変換

データベースに依存しないようにする場合は、dialect.getLowercaseFunction()を使用して、ILikeExpressionのように文字列を小文字に変換するデータベース関数を取得します。

関連する問題