考虑为同一个表(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继承技巧不相关!
答案 0 :(得分:0)
目前没有办法,因为索引类型的标识直接表示模型的类实例。这将在Hibernate Search 5中发生变化,因此在该版本中,您可能会为这种情况提供“干净”的解决方案,但我还不知道我们是否会为此公开API,以及它的外观如何。您可能必须提供“实体身份”的自定义实现。