【问题标题】:Is @DocumentId required for Hibernate Search?休眠搜索是否需要 @DocumentId?
【发布时间】:2012-09-11 20:57:15
【问题描述】:

我正在使用 Hibernate Search,文档和书籍说我需要在 id 字段上使用 @DocumentId,以便 Hibernate Search 可以知道如何将索引映射到对象。

如果我的代码中没有 @DocumentId,我的代码似乎可以正常工作。 Hibernate Search 是否变得足够聪明,可以发现 @Id 字段是一个很好的默认值?这会导致不明显的问题吗?

感谢您的宝贵时间!

【问题讨论】:

    标签: hibernate indexing hibernate-search


    【解决方案1】:

    @DocumentId 是必需的,如果您使用老式风格的映射您的实体与.hbm.xml 文件。如果您使用该映射方法而忽略注释文档 id,那么在启动时您将看到如下异常:

    org.hibernate.search.SearchException: No document id in: com.mypackage.MyEntity
    

    但是,如果您正在使用注释并且已使用@Id 注释了主键,那么您不必使用@DocumentId

    更准确地说,Hibernate Search 文档说 @DocumentId 在使用 JPA 注释时是可选的。因此,如果您使用的是 Hibernate 3.x 风格的注释,也许您仍然需要使用 @DocumentId ......我从未测试过这个。

    无论哪种方式,Hibernate 4.x 都弃用了自己的映射注释,转而支持 JPA 样式的注释,即使您使用的是 Hibernate 的 Session 而不是 JPA 的 @ 987654329@为您的查询。简而言之:如果您使用的是 XML 样式的映射,则需要使用 @DocumentId……而如果您使用的是注解,则它是可选的,因为此时您无论如何都应该使用 JPA 样式的注解。

    【讨论】:

    • 我以为是这种情况,但我在文档中找不到。谢谢!
    猜你喜欢
    • 2016-01-26
    • 1970-01-01
    • 2015-04-17
    • 2011-11-17
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多