无法使用 Hibernate Search 搜索子实体

尚比亚尔

Mastername场上的以下实体上使用 Hibernate 它工作顺利。但是,我也想搜索它的子实体SubMaster's subName字段。

我已经加入@IndexedEmbedded@ContainedIn注解Hibernate中搜索文档中指定。但是,当我尝试搜索时它返回空subName

@Entity
@Indexed
@Table(name = "master", catalog="mydb")
public class Master implements java.io.Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "seq", unique = true, nullable = false)
    private Integer seq;

    @Column(name = "name", length = 45)
    @Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO)
    private String name;

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "master")
    @IndexedEmbedded
    private Set<SubMaster> subMasters = new HashSet<SubMaster>(0);

    //Getters and Setters
}


@Entity
@Table(name = "sub_master", catalog="mydb")
public class SubMaster implements java.io.Serializable {

    @Id
    @Column(name = "seq", unique = true, nullable = false)
    private Integer seq;

    @Column(name = "sub_name", length = 45)
    @Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO)
    private String subName;

    @ManyToOne(fetch = FetchType.EAGER)
    @ContainedIn
    private Master master = new HashSet<Master>(0);

    //Getters and Setters
}

搜索代码:

FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search.getFullTextEntityManager(em);

QueryBuilder qb = fullTextEntityManager.getSearchFactory()
        .buildQueryBuilder().forEntity(Master.class).get();

org.apache.lucene.search.Query query = qb
      .keyword()
        .wildcard()
      .onFields("name", "subMasters.subName")
      .matching("*"+token.toLowerCase()+"*")
      .createQuery();

javax.persistence.Query jpaQuery =
        fullTextEntityManager.createFullTextQuery(query, Master.class);

@SuppressWarnings("unchecked")
List<Master> result = jpaQuery.getResultList();

正在构建的索引:

名称_hibernate_class

任何在正确方向上的帮助将不胜感激。提前致谢。

尚比亚尔

感谢所有试图帮助我的人。但是,我自己已经解决了这个问题。hibernate tools用来从我的数据库生成实体,生成的实体catalog@Table注释中有一个属性

我删除了这个catalog属性并重新索引了我的实体并执行了搜索subMasters.subName,它就像魅力一样工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何级联更新到Hibernate的子实体

Hibernate Search的:如何配置指数动态JPA实体?

通过使用被查询实体的子实体的信息对Hibernate Criteria查询的结果进行排序

使用Hibernate Search自动完成

为什么Hibernate Search索引无法正常工作

Hibernate Search查询多个实体

Hibernate Search Java Spring,仅搜索具有指定ID的实体

无法使用Hibernate JPA更新嵌套实体

如何在Hibernate Search 3.0.0.ga中使用多个参数进行搜索

使用Hibernate Search / Lucene标记云?

Hibernate Search的用法,何时使用以及为什么

如何在Hibernate Search中正确使用@ContainedIn批注?

如何在Hibernate Search中使用Wordnet同义词?

如何使用Hibernate-Search索引和搜索ENUM类型

Hibernate Search抱怨实体,即使它根本没有被索引

无法使用WebApp启动tomcat7(Spring + Hibernate + Hibernate Search 4.5)NoClassDefFound:CorruptIndexException

使用多个关键字进行Hibernate Search的索引搜索

Hibernate Search查询类

Hibernate搜索:org.hibernate.search.SearchException:未知的分析器定义:stem_analyzer_definition

使用投影可以提高Hibernate Search索引的构建性能吗?

在数据库中搜索文本(使用Hibernate Search)

使用Hibernate Search查询枚举(枚举)的IndexedEmbedded列表

Hibernate Search集群和近实时搜索

如何使用Hibernate Lucene Search访问实体中外键的排序字段名称?

使用 Hibernate Search 时“过滤查询不支持排序”

Hibernate Search:如何正确使用通配符?

使用 Elasticsearch 禁用 Hibernate Search 的索引映射创建

将 EntityGraph 与 Hibernate Search ORM 结合使用

Hibernate 选择最近执行的子实体