据我阅读这部分文档可以理解
在没有双向映射的 @IndexedEmbedded 字段上没有自动重新索引。我对么?如果是这样,我很想知道是什么导致了这一点,因为在 Hibernate 搜索中,在更新 @IndexedEmbedded 字段中的字段时会自动重新索引。这是否意味着我现在负责更新索引?
这是导致未更新索引的用例示例:
@Indexed(index = "foo_index")
@Entity
public class Foo {
private Long id;
@IndexedEmbedded
@ManyToOne(fetch = LAZY)
private Bar bar;
}
@Entity
public class Bar {
private Long id;
@GenericField
private String barFieldOne;
@GenericField
private String barFieldTwo;
}
然后假设我从数据库中检索 Foo 并更改一个 bar 字段,如下所示:
Foo foo = repository.findById(1);
foo.getBar().setBarFieldOne("newValue");
repository.save(foo);
尽管我正在处理 @Indexed 对象(在我们的例子中为 Foo ),但这不会触发 foo 索引的索引更新。我有很多单向关系,我不想让它们双向,因为我不需要它们,它们会导致性能问题。我知道,如果我自己更新 bar 实体,它不会更新索引,但在这里我通过主 @Indexed 实体更新它,我希望索引会更新。
这个用例在 hibernate search 5 中完美运行,老实说,这很重要。有没有办法让它在这里工作,因为这会让我的生活更轻松。