
[英]Query an IndexedEmbedded list of Enumerated (enum) with Hibernate Search
[英]@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.