使用Hibernate搜索版本V4.5.0,我特林使用類似使用@containedIn和的includepaths
@IndexedEmbedded(depth = 0, includePaths = {"id", "name"})
,而不是
@IndexedEmbedded(depth = 1)
在我不需要的所有細節的情況下關聯的類,但只有一個或兩個字段。我遇到的問題是,關係另一方的@ContainedIn現在似乎沒有效果。我認爲「includePaths」的意思是讓你可以索引超出指定深度範圍的信息。如果是這樣,當關聯實體更改時如何保持主實體索引同步?
更糟糕的是我發現設置includePaths看似無關的條目也打破了我的@containedIn邏輯。
例如「Person」對象包含一組「Card」對象。
public class Person {
...
@IndexedEmbedded(depth = 1)
private Set<Card> cards = new HashSet<Card>(0);
...
}
「卡」對象的類型爲「西裝」。
public class Card {
...
private Person person;
@Field
private String cardName;//e.g. jack, queen, king
@IndexedEmbedded(depth = 0, includePaths = {"id"})//????????????
private Suit suit;//e.g. hearts, diamonds
...
@ContainedIn
public Person getPerson() {
return this.person;
}
}
與上面的代碼,一個CRUD操作卡僅反映上證指數本身,而不是體現在誰擁有該卡的人物索引。不過,如果我對西服改變看似不相關的註釋從
@IndexedEmbedded(depth = 0, includePaths = {"id"})
到
@IndexedEmbedded(depth = 1, includePaths = {"id"})
然後,兩個卡和個人的entites被更新。
對不起,回覆遲了,我失去了這個線程跟蹤。據我可以看到從文檔你可以看到: - 1.深度= 0是有效的*「當使用includePaths,並保持深度未定義,行爲等同於設置depth = 0:只有包含的路徑索引」 * 2.它的索引超出指定的深度。如例4:10所示,*「parents.parents.parents.name」*的索引超出了深度。 我真正的問題是關係的另一方@containedIn不更新它指向的東西的索引。 – user2046211