非常に基本的なFieldBridge
の実装を動作させることができません。インデックス作成プロセスが@FieldBridge
注釈を完全に無視しているように見えます。カスタムFieldBridgeの実装でフィールドを見つけることができません
ここでの実装です:
public class LocalisedInformationBridge implements FieldBridge {
@Override
public void set(String name, Object value, Document document, LuceneOptions luceneOptions) {
luceneOptions.addFieldToDocument(name + ".test", "test", document);
}
}
エンティティ@FieldBridge
注釈付き:
@OneToMany(mappedBy = "product")
@MapKey(name = "languageCode")
@IndexedEmbedded
@FieldBridge(impl = LocalisedInformationBridge.class)
private Map<String, LocalisedProductInformation> localisedProductInformation;
含まれるエンティティ:
@ManyToOne
@JoinColumn(name="productId")
@ContainedIn
private Product product;
私はlocalisedProductInformation.test
フィールドを検索しようとすると、私は例外を取得する:
org.hibernate.search.exception.SearchException:フィールドに localisedProductInformation.test
を見つけることができませんがここで私はデータをインデックス化しています方法は次のとおりです。
FullTextEntityManager fullTextEntityManager =
Search.getFullTextEntityManager(entityManager);
fullTextEntityManager.createIndexer().startAndWait();
とき、私奇妙なことがありますset
メソッドのブレークポイントをLocalisedInformationBridge
クラスにすると、デバッガはプログラムの実行を停止しません。私がここで行方不明になっていることは非常に明白ですか?
パスにロードされていますか?メッセージを出力するデフォルトのコンストラクタのような愚かなことをしてください。少なくとも – efekctive
がロードされていることをこの方法で知っているでしょうログにはすべてのエンティティが再インデックスされていると表示され、コンストラクタからメッセージを印刷すると、すべてのエンティティに対してメッセージが表示されます... – fuudge
コンテナは、そのインデックスのためですか? – efekctive