相关疑难解决方法(0)

外部实体更改后索引不更新

我目前正在开发一个项目,以使用 JPA 2.1 保存数据并使用休眠搜索 4.5.0.final 搜索实体。

映射类和索引后,搜索工作正常。

但是,当我将classB的值描述从“someStr”更改为“anotherStr”时。数据库也相应更新了,但是当我使用Luke检查索引时,索引中的classA.classB.description没有更新,并且无法通过关键字“anotherStr”搜索数据,但可以通过关键字“someStr”进行搜索。

在我重新索引整个数据库后,它终于更新了。

根据 Hibernate 搜索网站,

简短的回答是索引是自动的:Hibernate Search 将透明地索引每个通过 Hibernate ORM 持久化、更新或删除的实体。它的任务是保持索引和你的数据库同步,让你忘记这个问题。

但这在我的情况下不起作用。我不确定我是否遗漏了一些细节,或者我需要自己处理此类问题。

我还尝试按照this one的建议在classB上添加注释@Indexed ,但它仍然没有解决我的问题。

据我所知,解决方案是定期重新索引数据库。但是重新索引会禁用搜索功能,并且在大多数情况下这不是一个选项。

有人可以给一些建议吗?谢谢。

我有一个类,它通过使用 @IndexedEmbedded 注释嵌入了一些其他类。这是我的类映射的简化版本。

Class A
@Entity(name = "classA")
@Indexed
public class classA extends Model {
    private int id;
    private String name;
    private ClassB place;
    ...
    some constructors
    ...
    @Id
    @GeneratedValue
    @DocumentId
    public int getId() {
        return id;
    }

    @Column(name = "name")
    @Field(analyze = Analyze.NO, store = Store.YES)    // only used for sorting …
Run Code Online (Sandbox Code Playgroud)

java indexing jpa hibernate-mapping hibernate-search

5
推荐指数
1
解决办法
2071
查看次数