MySQLIntegrityConstraintViolationException:Duplicate hibernate 中@JoinTable 的入口异常

MySQLIntegrityConstraintViolationException:Duplicate entry exception for @JoinTable in hibernate

当我尝试使用休眠保存实体时,它给出 MySQLIntegrityConstraintViolationException: Duplicate entry '2' for key ...

这是在class 首选项

中声明的关联
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "selectedLanguages", 
joinColumns = @JoinColumn(name = "preferenceId"), 
inverseJoinColumns = @JoinColumn(name = "languageId"))
private List<Language> languages;

这是在 mysql 服务器

中创建的 table
CREATE TABLE `languages` (
  `preferenceId` bigint(20) NOT NULL,
  `languageId` int(11) NOT NULL,
  UNIQUE KEY `UK_ipl1uqtuxu2oxu5pddfi6sebl` (`languageId`),
  KEY `FKm18lbdrrxs89ff7pymjalc7ca` (`preferenceId`),
  CONSTRAINT `FKhmgypuduucfqf98sf2ymorqpr` FOREIGN KEY (`languageId`) REFERENCES `languages` (`languageId`),
  CONSTRAINT `FKm18lbdrrxs89ff7pymjalc7ca` FOREIGN KEY (`preferenceId`) REFERENCES `preferences` (`preferenceId`)
);

这表明语言 id 是唯一的,这不是预期的行为,因为用户可以了解几种语言,而一种语言可以被许多用户引用。

我尝试在 inverseJoin 部分添加 unique=false 但没有成功。 如何删除 languageId 的唯一约束?我的代码有什么问题?

当我将 List<Language> 更改为 Set<Language> 时它起作用了,不知道为什么。 **如果有人知道原因,请post它。