我使用Hibernate Search,文档和书籍说我需要在id字段中使用@DocumentId,这样Hibernate Search就可以知道如何将索引映射到对象。
我的代码似乎工作得很好,代码中没有@DocumentId。Hibernate Search是否足够智能,能够识别出@Id字段是一个很好的默认字段?这会导致不明显的问题吗?
耽误您时间,实在对不起!
发布于 2012-10-03 04:52:44
如果您使用老式的样式将实体映射到.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的Session而不是JPA的EntityManager进行查询,也可以使用。因此,简而言之:如果您正在使用XML式映射,则需要使用@DocumentId ...而如果您正在使用注解,则它是可选的,因为在这一点上,无论如何您都应该使用JPA样式的注解。
https://stackoverflow.com/questions/12377808
复制相似问题