2017-12-02 200 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>不知道爲什麼。 **如果有人知道原因,請張貼。