我在使用Hibernate搜索索引嵌入式文本實體時遇到了一些問題。 由於實體擴展了我無法更改的其他實體,因此使用註釋是不可行的。Hibernate搜索索引嵌入式地圖
因此我使用編程API進行映射。但是,Hibernate搜索不會索引嵌入的文本實體。
這裏是什麼樣的實體模型看起來像一個簡單的例子(剝離下來爲簡單起見):
@Entity
class Article {
@Id
private long uid;
private String articleNumber;
@OneToMany (mappedBy = "article")
@MapKey(name = "languageCode")
private Map<String, ArticleText> texts;
...
}
@Entity
class ArticleText {
@ManyToOne
private ArticleEntity article;
private String languageCode;
private String someText;
...
}
@Entity
class SpecialArticle extends Article {
private String someSpecialAttribute;
}
而這裏的映射的摘錄:
SearchMapping mapping = ...;
mapping.entity(SpecialArticle.class)
.indexed()
.property("uid", ElementType.FIELD).documentId()
.property("articleNumber", ElementType.FIELD).field()
.property("someSpecialAttribute", ElementType.FIELD).field()
.property("texts", ElementType.FIELD)
.indexEmbedded().targetElement(ArticleText.class).entity(ArticleText.class)
.property("article", ElementType.FIELD).containedIn()
.property("someText", ElementType.FIELD).field();
文檔ISN」我很清楚使用.indexEmbedded().entity(...)
,但我有另一個嵌入式實體(多對一關聯),它只使用類似的映射進行索引。
我懷疑文本沒有被映射,因爲正在使用的地圖和Hibernate搜索無法將屬性標識爲地圖。有一個MapBrigde
以及一個BuildInMapBridge
但他們似乎並沒有被用於建立映射。
我可能會丟失什麼或錯誤在哪裏?
順便說一句,我在Hibernate Search 4.0.1和Hibernate 4.0.1環境中執行此操作。