我有一个实体配置(@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相关联。所以,不知道我应该在哪里看。
经过更多研究后,似乎在初始搜索查询之后,后续查询不会从数据库中检索数据,只返回初始查询的结果。第一个查询工作正常,但后续查询看起来像是缓存的。
感谢