我正在使用Hibernate Search,文檔和書籍說我需要ID字段的@DocumentId,以便Hibernate Search可以知道如何將索引映射到對象。Hibernate搜索需要@DocumentId嗎?
我的代碼似乎沒有@DocumentId在我的代碼中的任何地方工作正常。 Hibernate Search是否足夠聰明地發現@Id字段是一個很好的默認值?有沒有問題會導致不明顯?
謝謝你的時間!
我正在使用Hibernate Search,文檔和書籍說我需要ID字段的@DocumentId,以便Hibernate Search可以知道如何將索引映射到對象。Hibernate搜索需要@DocumentId嗎?
我的代碼似乎沒有@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註釋時,是可選的。所以如果你使用Hibernate 3.x風格的註釋,也許你仍然需要使用@DocumentId
......我從來沒有測試過這個。
無論哪種方式,休眠4.x的棄用自己的地圖標註有利於JPA風格的註解,即使您正在使用Hibernate的Session
,而不是JPA的EntityManager
爲您查詢。因此,簡而言之,如果您使用的是XML樣式映射,則需要使用@DocumentId
;但如果您使用註釋,則它是可選的,因爲此時您應該使用JPA樣式註釋。
我認爲這是事實,但我無法在文檔中找到它。謝謝! – jackcrews