同步为同一个表(实体)映射的两个lucene文档

时间:2014-06-03 13:47:48

标签: lucene hibernate-search synchronize

考虑为同一个表(PERSON)映射的两个相同的Java实体(PersonM1,PersonM2),其定义为:

    @Entity
    @Table(name = "PERSON")
    @Indexed
    public class PersonM1 {

    @Id
    @DocumentId
    private long id;

    @Field
    @Column
    private String name;
    //setters, gettes, ...

}

@Entity
@Table(name = "PERSON")
@Indexed
public class PersonM2 {

    @Id
    @DocumentId
    private long id;

    @Field
    @Column
    private String name;
    //setters, gettes, ...
}

有没有办法在更新PersonM1对象时更新PersonM2索引? 如果对象PersonM1已更新,则更改将保留在数据库中,但不会保留在PersonM2索引目录中,因此在这种情况下PersonM2索引将不正确。

我应该手动完成(更新PersonM2时更新PersonM1)?

注意:Java继承技巧不相关!

1 个答案:

答案 0 :(得分:0)

目前没有办法,因为索引类型的标识直接表示模型的类实例。这将在Hibernate Search 5中发生变化,因此在该版本中,您可能会为这种情况提供“干净”的解决方案,但我还不知道我们是否会为此公开API,以及它的外观如何。您可能必须提供“实体身份”的自定义实现。