Hibernate搜索是否需要@DocumentId?

Hibernate搜索是否需要@DocumentId?,hibernate,indexing,hibernate-search,Hibernate,Indexing,Hibernate Search,我正在使用Hibernate搜索,文档和书籍说我需要在id字段上使用@DocumentId,这样Hibernate搜索就可以知道如何将索引映射到对象 我的代码在没有@DocumentId的情况下运行正常。Hibernate搜索是否变得足够聪明,能够发现@Id字段是一个很好的默认值?是否存在不明显的问题 谢谢你的时间 如果您使用的是旧式的映射实体与.hbm.xml文件的方式,则需要@DocumentId。如果您使用这种映射方法而忽略对文档id进行注释,那么在启动时您将看到如下异常: org.hib

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

我的代码在没有@DocumentId的情况下运行正常。Hibernate搜索是否变得足够聪明,能够发现@Id字段是一个很好的默认值?是否存在不明显的问题


谢谢你的时间

如果您使用的是旧式的映射实体与
.hbm.xml
文件的方式,则需要
@DocumentId
。如果您使用这种映射方法而忽略对文档id进行注释,那么在启动时您将看到如下异常:

org.hibernate.search.SearchException: No document id in: com.mypackage.MyEntity
但是,如果您正在使用注释,并且已使用
@Id
注释主键,则不必使用
@DocumentId

更准确地说,Hibernate搜索文档说,当使用JPA注释时,
@DocumentId
是可选的。因此,如果您使用的是Hibernate 3.x样式的注释,那么您可能仍然需要使用
@DocumentId
。。。我从未测试过这个


无论哪种方式,Hibernate 4.x都不支持自己的映射注释,而支持JPA样式的注释,即使您在查询时使用的是Hibernate的
会话而不是JPA的
EntityManager
。简而言之:如果您使用的是XML样式的映射,那么您需要使用
@DocumentId
。。。然而,如果您使用的是注释,那么它是可选的,因为此时您无论如何都应该使用JPA样式的注释。

我认为是这样,但在文档中找不到它。谢谢