A类是根实体,B类是子实体,关系为1:n。
我的示例代码:
@Entity
@Index
Class A {
@javax.persistence.Id
@DocumentId
@Column
private Long id;
@IndexedEmbedded
private List<B> elements;
}
@Entity
@Index
Class B {
@javax.persistence.Id
@DocumentId
@Column
private Long id;
@Column
private Long name;
@IndexedEmbedded
private A a;
}
我的lucene查询:
QueryBuilder builder = searchFactory.buildQueryBuilder().forEntity(B.class).get();
PhraseContext phraseCtx = builder.phrase().withSlop(2).boostedTo(25f);
PhraseMatchingContext phraseMatchingCtx = phraseCtx.onField("name");
Query query = builder.all().createQuery();
FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery(query,B.class);
List<B> list = fullTextQuery.getResultList();
但它没有检索到结果。
答案 0 :(得分:0)
您应该在关系B的一侧用@IndexedEmbedded
注释替换@ContainedIn
。
假设A是B的父级,那么在B中你应该添加注释中包含的内容:
@ContainedIn
private A a;
不要忘记OneToMany / ManyToOne映射