当@ContainedIn实体保存到数据库时,它不会自动编入索引

时间:2013-08-13 14:07:58

标签: java spring hibernate lucene hibernate-search

每次新的Photo实体进入时,我都会使用Hibernate Search自动更新Lucene索引。当照片数据被保存或编辑时,它会很快自动地进入索引。但是,当添加评论时,它永远不会进入。而且它正是@IndexedEmbedded/@ContainedIn应该做的,对吧?

我的代码大致如下:

@Indexed(index="/indexes/photo.index")
@Entity
public class Photo {

    @IndexedEmbedded
    @OneToMany(mappedBy="photo", fetch = FetchType.LAZY)
    public List<Comment> comments;

}

@Indexed(index="indexes/comment.index")
@Entity
public class Comment {

    @ContainedIn
    @ManyToOne
    public Photo photo;

    @Field
    public String text;
}

我正在使用以下lib版本:

hibernate-search-3.4.0.Final
lucene-core-3.6.0
lucene-analyzers-3.1.0

注意:对于那些马上跳过的人,说我搞砸了这两个注释的顺序,我会说我也尝试过相反的方式。不起作用。

1 个答案:

答案 0 :(得分:0)

版本3.4.0.Final是第一个包括脏检查优化的版本,这在以后的版本中更稳定。你能尝试设置Hibernate配置属性

吗?
hibernate.search.enable_dirty_check=false

确保此类优化不会影响您。

此外,使用此版本所针对的Lucene版本,或者您可能遇到任何问题:

lucene-core-3.1.0
lucene-analyzers-3.1.0