Hibernate Search是否需要@DocumentId?
我正在使用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
在使用
注释时是可选的。因此,@DocumentId
如果您正在使用Hibernate 3.x样式的注释,也许您仍需要使用…我从未测试过。
无论哪种方式, 您在查询中使用的是Hibernate Session
而不是JPA ,Hibernate
4.x都会弃用自己的映射注释,而使用JPA样式的注释EntityManager
。简而言之:@DocumentId
如果您正在使用XML样式的映射,则需要使用…,而如果您使用的是注释,则是可选的,因为此时您仍应使用JPA样式的注释。
以上是 Hibernate Search是否需要@DocumentId? 的全部内容, 来源链接: utcz.com/qa/403386.html