PersonとPreferenceの2つのエンティティがあります。両者の間には多くの関係があります。人と好みの関係はマッピングテーブルに保存されます
CREATE TABLE `person_2_preference` (
`person_id` varchar(32) NOT NULL,
`preference_id` varchar(32) NOT NULL,
`sort_order` int(11) NOT NULL,
PRIMARY KEY (`person_id`,`preference_id`);
ある人は、以下に示すように、好みの順序付きリストを持っています。
<list name="preferences" table="person_2_preference" lazy="true" inverse="false"
cascade="save-update">
<key column="person_id" update="false"/>
<index column="sort_order"/>
<many-to-many class="com.xx.Preference" column="preference_id" />
</list>
Javaクラスでは、場合によっては設定を並べ替えたいので、Collections.swap(person.getPreferences()、index、index ++)のようなCollections.swapを実行しています(インデックスがないことを確認するための検証があります範囲外)
個人(personDao.saveOrUpdate(person))を保存すると、主キーが原因で一意の制約違反の例外が発生します。
他にも1対多の順序付けされた関係があり、Collections.swapを使用した再順序付けはうまく機能しますが、これは多多関係の制限ですか?御時間ありがとうございます