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它。
当我尝试使用休眠保存实体时,它给出 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 服务器
中创建的 tableCREATE 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它。