我有三个实体,其中BEntity和CEntity从AEntity扩展
@Entity
@Indexed
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public class AEntity {
@Id
private String externalId;
}
@Entity
@Indexed
@DiscriminatorValue("B")
public class BEntity extends AEntity {
@Field
private String number;
}
@Entity
@Indexed
@DiscriminatorValue("C")
public class CEntity extends AEntity {
@Field
private String number;
}
现在我想搜索数字等于1234的子实体,我尝试使用以下方法,但出现此错误
HSEARCH000331:无法为类型为“ BEntity”的查询建立查询 已配置,也没有任何已配置的子类型。
public void unicity() {
List<Query> listOfQuery = new ArrayList<>();
// error in this line
QueryBuilder queryBuilder1 = getFullTextEntityManager().getSearchFactory().buildQueryBuilder().forEntity(BEntity.class).get();
QueryBuilder queryBuilder2 = getFullTextEntityManager().getSearchFactory().buildQueryBuilder().forEntity(CEntity.class).get();
listOfQuery.add(queryBuilder1.keyword().onField("number").matching("1234").createQuery());
listOfQuery.add(queryBuilder2.keyword().onField("number").matching("1234").createQuery());
}
答案 0 :(得分:0)
@Indexed
批注确实是org.hibernate.search.annotations.Indexed
,而不是其他库中的其他批注。BEntity
检测为一个实体。您是否可以使用Hibernate ORM运行针对此类型的查询?例如。使用JPQL或条件?hibernate.search.autoregister_listeners
设置为false
。