4

MyItemBean0個以上の関連オブジェクトを持つことができるというオブジェクトがありKeywordBeanます。結果のクラスは次のようになります。

@Entity
public class MyItemBean {

   ...stuff...

   @ManyToMany(targetEntity = KeywordBean.class, cascade = CascadeType.PERSIST)
   @JoinTable(name = "tbl_item_keyword", joinColumns = @JoinColumn(name = "item_id"), inverseJoinColumns = @JoinColumn(name = "keyword_id"))
   private List<KeywordBean> keywords = null;

   ...more stuff...
}

@Entity
public class KeywordBean {

   ...stuff...

   private String value=null;

   ...more stuff...
}

これらのオブジェクトに対して検索クエリを実行できるように、JBoss Seam /HibernateSearchを使用してこれらのオブジェクトにインデックスを付けています。MyItemBean指定されたキーワード値を持つインスタンスを検索できるようにしたいと思います。KeywordBeanただし、オブジェクトを単なる。以外に適用するため、この関係は一方向ですMyItemBean。リレーションにインデックスを付ける方法の例については、Hibernate Searchのドキュメントを調べましたが、それらが提供するすべての例は双方向です。MyItemBean.keywordsキーワード値に適切にインデックスを付けるために適用する必要のある注釈を誰かに教えてもらえますか?

4

1 に答える 1

6

使用する注釈はIndexedEmbeddedです。一方向の関連付けでも問題なく機能します。KeywordBeanの値を変更すると、問題が発生する可能性があります。Hibernate Search には、変更されたKeywordBeanを参照するMyItemBeanインスタンスのインデックスを更新する方法がありません。双方向の関係では、@ContainedInを使用してこの問題を解決できますが、これは実際には必要ありません。あなたのユースケースでは、このインデックス更新の制約は問題にならないかもしれません。KeywordBeanが変更されていない可能性があります。または、変更された場合は、影響を受けるすべての *KeywordBean* を手動で再インデックス化できます。

――ハーディー

于 2010-12-20T14:03:54.087 に答える