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

同步为同一表(实体)映射的两个lucene文档,lucene,hibernate-search,synchronize,Lucene,Hibernate Search,Synchronize,考虑两个相同的Java实体PersonM1、PersonM2,它们为同一个表PERSON映射,具有相同的属性,定义如下: @Entity @Table(name = "PERSON") @Indexed public class PersonM1 { @Id @DocumentId private long id; @Field @Column private String name; //setters

考虑两个相同的Java实体PersonM1、PersonM2,它们为同一个表PERSON映射,具有相同的属性,定义如下:

    @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继承技巧与此无关

目前没有办法,因为索引类型的标识直接由模型的类实例表示。这将在HibernateSearch5中发生变化,因此在该版本中,对于这种情况,您可能有一个干净的解决方案,但我还不知道我们是否会为此公开一个API,以及它会是什么样子。您可能需要提供实体标识的自定义实现。

谢谢您的明确回答。你从哪里得到这个信息的?桑恩,我不确定。如果在两个实体上都添加@Indexedname=Person,会发生什么情况?这本质上就是表映射的作用。