我们正在使用休眠搜索5.9.2。
我们有两个具有A和B的实体。A与B具有一对多关系,并且我们按如下方式使用它们:
@Entity
@Indexed(index="master_index")
public class A{
@IndexedEmbedded
private Set<B> b= new HashSet<>(0);
//Setter and getter for b
}
@Entity
@Indexed(index = "b")
public class B{
@ContainedIn
private A a;
//Setter and getter for a
}
一对多关系在.hbm文件下定义。
现在,当某些记录直接从索引B中删除(但是通过休眠过程)时,不会从'master-index'中删除同一记录。
[让我们假设我有一个记录'xyz',该记录在索引B下可用,并且在'A'下也可用,并且具有类似DUDE(A的数据)的关系可以包含很多数据,例如'xyz'。
DUDE-> XYZ
预期结果应该是记录应从索引'b'以及'master-index'中删除。
冬眠搜索提供了一种处理这种情况的方法。
Hibernate Search希望双向关联在双方上均保持一致。
这意味着,删除B
时,应将其从A.b
中删除。这将导致实体A
发生更改,这将触发该实体的重新索引。
如果A
未重新编制索引,则可能意味着您忘记从B
中删除A.b
。