JPA ManyToMany连接表自动设置索引唯一

时间:2015-11-09 01:08:16

标签: mysql sql database hibernate jpa

这里对JPA来说还是一个新手,并且在将近两天的时间内遇到问题,寻求帮助。

我的项目使用Spring Data和MySql,目前有一个非常简单的架构,包含User,Group实体。

> sudo service rabbitmq-server status
Status of node 'rabbit@ip-172-31-26-169' ...
[{pid,22865},
..

在DB中创建的联接表@Entity public class User { public User() {} public User(String username, boolean superUser, boolean blackList) { this.username = username; this.superUser = superUser; this.blackList = blackList; } @Id String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } ... @ManyToMany @ElementCollection @JoinTable(name="user_groups", joinColumns={@JoinColumn(name="USER_NAME", referencedColumnName="USERNAME")}, inverseJoinColumns={@JoinColumn(name="GROUPNAME")}) List<UserGroup> userGroups; public void addGroup(UserGroup group) { if (!this.userGroups.contains(group)){ this.userGroups.add(group); } } } 包含user_groupsuser_name的索引,但groupname的索引是英国_ ***和标记为UNIQUE,因此我无法添加groupnamegroupA, userA,因为它会抱怨违反唯一键。

我想将两个值的组合作为连接表的唯一键,所以是否有任何特定的配置我在这里丢失或者我用错了?

1 个答案:

答案 0 :(得分:0)

好吧,事实证明我在JPA上犯了一个错误的错误,错过了userGroups字段的getter和setter。通过添加它们,表现在正如预期的那样工作。