我有两个实体 Person 和 Preference。两者之间存在多对多的关系。人和偏好关系存储在映射表中
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 之类的 Collections.swap(person.getPreferences(), index, index++) (我有验证以确保索引不是超出范围)
当我保存人 - personDao.saveOrUpdate(person) 时,由于主键,我得到一个唯一的约束违规异常。
我还有其他一对多的有序关系,使用 Collections.swap 重新排序效果很好。这是对多对多关系的限制吗?谢谢你的时间