2012-09-11 64 views
5

我正在使用Hibernate Search,文檔和書籍說我需要ID字段的@DocumentId,以便Hibernate Search可以知道如何將索引映射到對象。Hibernate搜索需要@DocumentId嗎?

我的代碼似乎沒有@DocumentId在我的代碼中的任何地方工作正常。 Hibernate Search是否足夠聰明地發現@Id字段是一個很好的默認值?有沒有問題會導致不明顯?

謝謝你的時間!

回答

4

@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樣式註釋。

+0

我認爲這是事實,但我無法在文檔中找到它。謝謝! – jackcrews