3
我正在嘗試爲部分由抽象類組成的模型創建lucene索引。比方說,我想索引類A,它有一個方法返回一個B類元素的列表,它有一個抽象類C的對象,它有一個抽象方法getD()來返回一個D類元素的列表。 E類和F類擴展了C類,並且都實現了方法getD(),爲此我創建了一個FieldBridge實現(實現StringBridge)以將結果轉換爲用於索引的文本輸出。如何處理@IndexedEmbedded包含路徑中的抽象類型?
Hibernate搜索文檔並沒有詳細說明如何處理繼承以及它們如何與@IndexedEmbedded註釋一起使用。我嘗試了只提供c.getD作爲includePath的樸素方法,希望c的子類的getD實現會自動被使用。
org.hibernate.search.SearchException: Found invalid @IndexedEmbedded->paths configured on class A, member vragen: b.c.getD
行的事誰知道如何設置的搜索路徑或爲了得到由FieldBridge實施爲索引創建的字符串改變以任何其他方式的代碼:運行服務器時,這將導致以下SearchException A類?代碼如下:
@Indexed
public class A {
@IndexedEmbedded(includePaths = { "c.getD" })
public List<B> getB() {
// Method implementation returning a list of B
}
}
public class B{
private C c;
}
public abstract class C{
public abstract List<D> getD();
}
public class E extends C{
@Field
@FieldBridge(impl = DListFieldBridge.class)
public List<D> getD() {
// Method implementation returning a list of D
}
}
public class F extends C{
@Field
@FieldBridge(impl = DListFieldBridge.class)
public List<D> getD() {
// Method implementation returning a list of D
}
}