2012-09-11 5 views
5

私はHibernate Searchを使用しています。ドキュメントと書籍は、Hibernate Searchがインデックスをオブジェクトにマップする方法を知ることができるように、idフィールドに@DocumentIdが必要だと言っています。@DocumentIdはHibernate Searchに必要ですか?

コードが@DocumentIdなしで正常に動作しているようです。 Hibernate Searchが@Idフィールドが素晴らしいデフォルトであることを知るのに十分なスマートになったか?これが明らかでない原因となる問題はありますか?

ありがとうございました!

答えて

4

@DocumentIdは、あなたのエンティティを.hbm.xmlファイルでマッピングする旧式のスタイルを使用する場合に必要です。あなたは、注釈を使用していて、@Idで主キーを注釈を付けている場合は、しかし、

org.hibernate.search.SearchException: No document id in: com.mypackage.MyEntity 

:あなたはドキュメントIDに注釈を付けることマッピングアプローチやネグレクトを使用している場合は、起動時に次のような例外が表示されます@DocumentIdを使用する必要はありません。

具体的には、Hibernate SearchドキュメントはJPAアノテーションを使用する場合@DocumentIdがオプションであることを述べています。だから、もしあなたがHibernate 3.xスタイルの注釈を使っているのであれば、まだ@DocumentIdを使う必要があります。私は決してこれをテストしていません。

いずれかの方法は、Hibernateの4.xのは、あなたがHibernateのSessionむしろJPAのEntityManagerよりのためのクエリを使用しているJPAスタイルのアノテーション、場合でもの賛成で、独自のマッピング・アノテーションを非難します。 XML形式のマッピングを使用している場合は@DocumentIdを使用する必要がありますが、アノテーションを使用している場合はオプションですが、この時点でJPAスタイルのアノテーションを使用する必要があるためです。

+0

私はこれが当てはまると思ったが、私はドキュメントでそれを見つけることができなかった。ありがとう! – jackcrews

関連する問題