如何解决休眠搜索:已配置的子类型
我有三个实体,其中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());
}
解决方法
- 确保
@Indexed
批注确实是org.hibernate.search.annotations.Indexed
,而不是其他库中的其他批注。 - 确保实际上将
BEntity
检测为一个实体。您是否可以使用Hibernate ORM运行针对此类型的查询?例如。使用JPQL或条件? - 确保您没有禁用休眠搜索,即未将
hibernate.search.autoregister_listeners
设置为false
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。