多个嵌套的IndexEmbedded不在hibernate搜索中更新索引

时间:2014-04-03 23:56:07

标签: java hibernate

我有一个实体配置(@Indexed)来使用Hibernate搜索。我也配置了一些属性(@Field),我可以查询并获得准确的结果。问题是当我尝试更新我的一个@IndexEmbedded属性时。在我进行更新后,索引不会更新,因此当我进行搜索时,会显示过时的数据。

这是我的配置:

第一实体

    @Indexed
    public class Strain extends BaseEntity {

        @IndexedEmbedded
        @OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy="strain")
        private Set<TestResult> testResults = new HashSet<TestResult>();

第二实体

    @Entity
    public class TestResult extends BaseEntity {

       @ContainedIn
       @ManyToOne(fetch = FetchType.LAZY, optional = false)
       private Strain strain;

       @IndexedEmbedded
       @ManyToOne(fetch = FetchType.LAZY, optional = false)
       private TestType testType;

第三实体

    @Entity
    public class TestType extends BaseEntity {

        @IndexedEmbedded
        @ManyToOne(optional = false, fetch = FetchType.EAGER)
        private Test test;

        @ContainedIn
        @OneToMany(mappedBy="testType")
        private Set<TestResult> testResults = new HashSet<TestResult>();

第4实体

    @Entity
    public class Test extends BaseEntity {

        @ContainedIn
        @OneToMany(fetch = FetchType.LAZY, mappedBy="test")
        private Set<TestType> testTypes = new HashSet<TestType>();

当我对Test或TestType进行更新时,索引不会更新。使用Luke,我可以看到Strain ID的索引与TestResult,TestType和Test相关联。所以,不知道我应该在哪里看。

经过更多研究后,似乎在初始搜索查询之后,后续查询不会从数据库中检索数据,只返回初始查询的结果。第一个查询工作正常,但后续查询看起来像是缓存的。

感谢

0 个答案:

没有答案