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 ) ) )。