-
11-10-2019 - |
質問
私は呼ばれるオブジェクトを持っています MyItemBean
0以上の関連することができます 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/Hibernate Searchを使用してこれらのオブジェクトをインデックス化して、それらに対して検索クエリを実行できるようにします。検索できるようになりたいです MyItemBean
特定のキーワード値を持つインスタンス。しかし、この関係は私が適用するので一方向です KeywordBean
単なるもの以上のオブジェクト MyItemBean
. 。 Hibernateの検索ドキュメントで、関係のインデックスを作成する方法に関する例を調べましたが、それらが提供する例はすべて双方向です。誰でも私が申請する必要がある注釈を教えてもらえますか MyItemBean.keywords
キーワード値を適切にインデックス化するには?
解決
使用する注釈はです indexedembeded. 。単方向の関連性にも適しています。あなたがの価値を変更している場合、問題が発生する可能性があります KeyWordBean Hibernate検索には、のインデックスを更新する方法がありません myitembean 変更を参照するインスタンス KeyWordBean. 。双方向の関係では、使用できます @に含まれた この問題を修正するには、実際にこれは必要ありません。 USECaseで提供されているこのインデックスの更新制約は問題ではないかもしれません。多分あなた KeyWordBean 変化していません。または、それが変更された場合、手動で影響を受けるすべての *keywordbean *sを再インドすることができます。
- ハーディ