繁体   English   中英

@IndexedEmbedded在一个延迟加载的实体列表中,不会自动进入搜索索引

[英]@IndexedEmbedded on a list of lazily-loaded entities, does not get into the search index automatically

我有一个问题,我认为应该很容易解决。

我使用Hibernate Search来索引与其他实体有关系的@Entitiy类。

每当一个实体指向另一个应该被编入索引的实体时,比如上传特定Photo的用户,我使用@IndexedEmbedded,它对HSearch的自动索引工作非常好。

但是,我也在@ManyToOne关系上设置了一些@IndexedEmbeded注释。 想象一张有相关评论列表的照片。 这些默认情况下是延迟加载的,即不是从DB中获取的,直到实际需要为止。 我注意到,当我添加注释时,无论多少时间过去,它都不会被编入索引,直到我进行手动重建索引。 一切正常。 我没有观察到任何其他的IndexedEmbedded关系,例如,如果我改变照片的位置,在几分钟内,它进入索引并且是完全可搜索的。

任何解释? 解?

我认为@IndexEmbedded的这个问题被报告为一个错误。 请参阅错误报告和修复版本。

如果您使用的版本较旧,则可能会解决您的问题。

您的映射应该看起来像这样

@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的使用。 这几乎是我认为你应该让你的例子工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM