そのため、GigaSpaces XAP と Hibernate プラグインを使用して DB テーブルをグリッド キャッシュにロードしています。残念ながら、グリッドのクエリでは、大文字と小文字を区別しない検索を直接サポートしていません。
彼らは2つの解決策を提供しました:
1-遅いLIKEクエリ(SQLと同じ)を使用します(これを気にする必要はありません)
2-大文字と小文字を区別しないフィールドの別のプロパティを作成します。
だから今私の選択肢は次のとおりです
。 「ToLower」プロパティ。(サポートされていますが、最後の手段として残します)
私は間違いなく#1には行きません。最終結果としてカスタムデータローダーを残します. だから私の考えは...
class Person {
String firstName
String firstNameLower
public void setFirstName(String firstName) {
this.firstName = firstName
this.firstNameLower = firstName.toLowerCase(...);
}
}
これは Hibernate で動作しますか? GigaSpace データローダは Hibernate を使用しており、私の pojo はほぼエンティティ クラスです。注釈ではなく、Hibernate XML マッピングを使用しています。「ToLower」フィールドはマップされません。Hibernate はマップされたすべてのフィールドで setXXX() を呼び出しますか、それとも内部で派手なコード置換を行い、setXXX() メソッドを呼び出しませんか。
また、ここで注釈を使用すると良いと思いますが、それらを実装する方法や、この場合に可能かどうかさえわかりません。