4.2.2. カスタムのブリッジ
Hibernate Search のビルトインブリッジが使用するプロパティタイプの一部に対応しなかったリ、 ブリッジにより使用される文字列表現が要件を満たさないことがります。以下のパラグラフはこの問題の複数のソリューションについて説明します。
4.2.2.1. StringBridge リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
もっともシンプルなカスタムのソリューションとして Hibernate Search に期待する
Object
と String
のブリッジの実装を提供します。これを行うには org.hibernate.search.bridge.StringBridge
インターフェースを実装する必要があります。すべての実装は同時に使用されるためスレッドセーフである必要があります。
例4.14 独自の StringBridge
の実装
すると、 いずれのプロパティまたはフィールドも
@FieldBridge
アノテーションによりこのブリッジを使用できるようになります。
@FieldBridge(impl = PaddedIntegerBridge.class) private Integer length;
@FieldBridge(impl = PaddedIntegerBridge.class)
private Integer length;
柔軟性を向上させるためにパラメータをそのブリッジ実装に渡すことができます。 ブリッジ実装は
ParameterizedBridge
インターフェースを実装し、 そのパラメータは @FieldBridge
アノテーションで渡されます。
例4.15 ブリッジ実装にパラメータを渡す
ParameterizedBridge
インターフェースは StringBridge
、 TwoWayStringBridge
、 FieldBridge
の実装で実装可能です。
すべての実装はスレッドセーフである必要がありますが、パラメータは初期化時に設定されるため、この段階では特に気を付ける必要はありません。
id プロパティにブリッジ実装を使用する予定がある場合 (つまり
@DocumentId
アノテーションを付与)、 若干拡張した TwoWayStringBridge
という名前の StringBridge
バージョンを使用する必要があります。 Hibernate Search は識別子の文字列表現を読み取りそこからオブジェクトを生成する必要があります。 @FieldBridge
アノテーションの使用方法に違いはありません。
例4.16 id プロパティなどに使用できる TwoWayStringBridge の実装
2 方向プロセスがべき等となることが非常に重要です (つまり、 object = stringToObject( objectToString( object ) ) )。