我有一个问题,我认为应该很容易解决。
我使用Hibernate Search来索引与其他实体有关系的@Entitiy类。
每当一个实体指向另一个应该被编入索引的实体时,比如上传特定Photo的用户,我使用@IndexedEmbedded,它对HSearch的自动索引工作非常好。
但是,我也在@ManyToOne关系上设置了一些@IndexedEmbeded注释。想象一张有相关评论列表的照片。这些默认情况下是懒惰加载的,即直到实际需要时才从DB中取出。我注意到,当我添加注释时,无论多少时间过去,它都不会被编入索引,直到我进行手动重建索引。一切正常。我没有观察到任何其他的IndexedEmbedded关系,例如,如果我改变照片的位置,在几分钟内,它进入索引并且是完全可搜索的。
任何解释?溶液
答案 0 :(得分:0)
我认为@IndexEmbedded的这个问题被报告为一个错误。请参阅this错误报告和固定版本。
如果您使用的版本较旧,则可能会解决您的问题。
答案 1 :(得分:0)
您的映射应该看起来像这样
@OneToMany(mappedBy="photo", cascade = { CascadeType.ALL}, fetch=FetchType.LAZY)
@IndexedEmbedded
@Type(type="java.util.Set")
private Set<Comment> comments;
............................................... ....
............................................... .....
@ContainedIn
@ManyToOne
@JoinColumn(name="PHOTO_ID")
private Photo photo;
注意关系的双向性(使用mappedBy)和@ContainedIn的使用。 这几乎是我认为你应该让你的例子工作。