我正在使用 Hibernate Search 并且文档和书籍说我需要在 id 字段上使用 @DocumentId 以便 Hibernate Search 可以知道如何将索引映射到对象。
我的代码在我的代码中没有任何地方没有 @DocumentId 的情况下似乎工作正常。 Hibernate Search 是否变得足够聪明,可以发现 @Id 字段是一个很好的默认值?这会导致不明显的问题吗?
谢谢你的时间!
最佳答案
@DocumentId
如果您使用 .hbm.xml
映射实体的老式风格,则需要文件。如果您使用该映射方法并忽略注释文档 ID,那么在启动时您将看到如下异常:
org.hibernate.search.SearchException: No document id in: com.mypackage.MyEntity
但是,如果您正在使用注释并使用
@Id
注释主键,那么您就不必使用 @DocumentId
.更准确地说,Hibernate Search 文档说
@DocumentId
使用时可选 JPA 注释。所以也许你仍然需要使用 @DocumentId
如果您使用的是 Hibernate 3.x 样式的注释......我从未测试过这个。无论哪种方式,Hibernate 4.x 都弃用了它自己的映射注释,转而支持 JPA 样式的注释,即使 您正在使用 Hibernate 的
Session
而不是 JPA 的 EntityManager
为您的查询。所以简而言之:你需要使用 @DocumentId
如果您使用的是 XML 样式的映射……而如果您使用的是注释,则它是可选的,因为此时您无论如何都应该使用 JPA 样式的注释。
关于hibernate - hibernate 搜索是否需要@DocumentId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12377808/