【发布时间】:2015-11-09 01:08:15
【问题描述】:
这里对 JPA 还是很陌生,与一个问题斗争了将近两天,寻求帮助。
我的项目使用 Spring Data 和 MySql,目前有一个非常简单的架构,包含用户、组实体。
@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);
}
}
}
并且在 DB 中创建的连接表 user_groups 具有 user_name 和 groupname 的索引,但是 groupname 的索引是 UK_*** 并标有 UNIQUE,因此我无法添加 groupA, userA , groupA, userB 因为它会抱怨违反唯一键。
我想让这两个值的组合成为连接表的唯一键,那么这里有没有我遗漏的特定配置或者我用错了?
【问题讨论】:
标签: mysql sql database hibernate jpa