14.2.4.2. カスタムブリッジ
Hibernate Search の組み込みブリッジは一部のプロパティータイプに対応していない場合や、ブリッジが使用する String 表現が要件を満たさない場合があります。以下では、この問題に対する複数の解決策を説明します。
14.2.4.2.1. StringBridge
最も単純なカスタムソリューションは、Hibernate Search に予想される
Object
を String
ブリッジに実装を提供することです。これを実行するには、org.hibernate.search.bridge.StringBridge
インターフェースを実装する必要があります。すべての実装は同時に使用されるため、スレッドセーフである必要があります。
例14.25 カスタム StringBridge の
実装
/** * Padding Integer bridge. * All numbers will be padded with 0 to match 5 digits * * @author Emmanuel Bernard */ public class PaddedIntegerBridge implements StringBridge { private int PADDING = 5; public String objectToString(Object object) { String rawInteger = ( (Integer) object ).toString(); if (rawInteger.length() > PADDING) throw new IllegalArgumentException( "Try to pad on a number too big" ); StringBuilder paddedInteger = new StringBuilder( ); for ( int padIndex = rawInteger.length() ; padIndex < PADDING ; padIndex++ ) { paddedInteger.append('0'); } return paddedInteger.append( rawInteger ).toString(); } }
で定義された文字列ブリッジが与えられます例14.25「カスタム
StringBridge の
実装」、@ FieldBridge
アノテーションのおかげで、どのプロパティーまたはフィールドでもこのブリッジを使用できます。
@FieldBridge(impl = PaddedIntegerBridge.class)
private Integer length;