2017-12-02 7 views
0

で@JoinTableのエントリ例外私は休止状態使用してエンティティを保存しようとしたとき、それはこれが関連であるMySQLIntegrityConstraintViolationException: Duplicate entry '2' for key ...MySQLIntegrityConstraintViolationException:重複休止

を与えているが

@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がユニークであることを示しています。これは、ユーザとして意図された動作ではありませんいくつかの言語を知ることができ、多くのユーザーが1つの言語を参照できます。 unique=falseinverseJoinに追加してみました。 languageIdの一意制約を削除する方法を教えてください。私のコードで何が間違っていますか?どんな助けもありがとう。

答えて

0

変更したときに機能しましたList<Language>Set<Language>に変更する理由はわかりません。 **誰かがその理由を知っているなら、投稿してください。