Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

14.2.4.2. カスタムブリッジ

Hibernate Search の組み込みブリッジは一部のプロパティータイプに対応していない場合や、ブリッジが使用する String 表現が要件を満たさない場合があります。以下では、この問題に対する複数の解決策を説明します。
14.2.4.2.1. StringBridge
最も単純なカスタムソリューションは、Hibernate Search に予想される ObjectString ブリッジに実装を提供することです。これを実行するには、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;