タグを多くのオブジェクトに固定することができ、オブジェクトには多くのタグを付けることができます。それは多対多関係が私にとって意味するものです。それがどういう意味ですか?
SQLでこれを行うと、TAGとOBJECTという名前のテーブルと、2つの列、つまり他のテーブルの各プライマリキーに対応するTAG_OBJECTという名前の結合テーブルがあります。 TAG_OBJECT結合テーブルの主キーはペア(TAG_ID、OBJECT_ID)です。これにより、各行に対してユニークなペアリングが保証されます。
Hibernateを使用している場合は、プライベートデータメンバーとしてのリストまたはオブジェクトのコレクションをTagクラスに追加し、タグのリストまたはコレクションをObjectクラスのプライベートデータメンバーとして追加します。
タグの2つのインスタンスの間の "深い等価性"を判断するための良い方法を書いている限り、Hibernateは "あなたが存在しない場合に限り"処理します。
タグのtitle属性にも一意制約を追加する必要があります。ここでは、JavaとXMLですので、非常に、あなたのニーズに適合しませんが、おそらくそのヒントはどこにNHibernateを探す場所をあなたに伝えるには十分だろう例です:あなたのケースのために
<element column="serialNumber" type="long" not-null="true" unique="true"/>
、列は次のようになりますタグのタイトル、型は文字列であり、他のフラグは例のままです。
ええ、そういう意味です。関係部分が完成して作業していますが、今はタグをユニークにしようとしています。さらなる議論のために、私がタグ付けしているオブジェクトがメッセージであるとしましょう。これはエンティティの1つのタイプです。 –
私はHibernateがこれを管理すると思います。 title属性に一意の制約を追加する必要があるかもしれません。 – duffymo
このように動作するため、一意性が壊れたときに例外がスローされます。私はこれを処理することができますが、私はよりクリーンな方法を探しています... –