首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate搜索需要@DocumentId吗?

Hibernate搜索需要@DocumentId吗?
EN

Stack Overflow用户
提问于 2012-09-12 04:57:15
回答 1查看 2.7K关注 0票数 6

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

我的代码似乎工作得很好,代码中没有@DocumentId。Hibernate Search是否足够智能,能够识别出@Id字段是一个很好的默认字段?这会导致不明显的问题吗?

耽误您时间,实在对不起!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-03 04:52:44

如果您使用老式的样式将实体映射到.hbm.xml文件,则需要使用@DocumentId。如果您正在使用映射方法而忽略了注释文档id,那么在启动时您将看到一个异常,如下所示:

代码语言:javascript
复制
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的Session而不是JPA的EntityManager进行查询,也可以使用。因此,简而言之:如果您正在使用XML式映射,则需要使用@DocumentId ...而如果您正在使用注解,则它是可选的,因为在这一点上,无论如何您都应该使用JPA样式的注解。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12377808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档