2017-12-02 219 views
0

当我试图使用Hibernate保存一个实体,它给MySQLIntegrityConstraintViolationException: Duplicate entry '2' for key ...MySQLIntegrityConstraintViolationException:重复录入例外@JoinTable休眠

这是关联类首

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

声明,这是在mysql服务器中创建表

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的唯一约束。我的代码有什么问题?任何帮助将不胜感激。请问你是否需要更多的数据信息

回答

0

它工作时,我改变List<Language>Set<Language>不知道为什么。 **如果有人知道原因,请张贴。