Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql JPA ManyToMany联接表自动将索引设置为唯一_Mysql_Sql_Database_Hibernate_Jpa - Fatal编程技术网

Mysql JPA ManyToMany联接表自动将索引设置为唯一

Mysql JPA ManyToMany联接表自动将索引设置为唯一,mysql,sql,database,hibernate,jpa,Mysql,Sql,Database,Hibernate,Jpa,对于JPA来说,这里还是一个全新的地方,与一个问题斗争了将近两天,寻求帮助 我的项目使用Spring数据和MySql,目前有一个包含用户、组实体的非常简单的模式 @Entity public class User { public User() {} public User(String username, boolean superUser, boolean blackList) { this.username = username; this.superUser = su

对于JPA来说,这里还是一个全新的地方,与一个问题斗争了将近两天,寻求帮助

我的项目使用Spring数据和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);
    }
}
}
@实体
公共类用户{
公共用户(){}
公共用户(字符串用户名、布尔超级用户、布尔黑名单){
this.username=用户名;
this.superUser=超级用户;
this.blackList=黑名单;
}
@身份证
字符串用户名;
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
...
@许多
@元素集合
@JoinTable(name=“用户组”,
joinColumns={@JoinColumn(name=“USER\u name”,referencedColumnName=“USERNAME”)},
inverseJoinColumns={@JoinColumn(name=“GROUPNAME”)}
列出用户组;
public void addGroup(用户组){
如果(!this.userGroups.contains(group)){
this.userGroups.add(组);
}
}
}
在DB中创建的联接表
user\u groups
具有
user\u name
groupname
的索引,但是
groupname
的索引是一个UK***并用UNIQUE标记,因此我不能添加
groupA,userA
groupA,userB
,因为它会抱怨违反UNIQUE键


我想将这两个值的组合作为联接表的唯一键,那么这里是否缺少任何特定的配置,或者是否使用了错误的配置

好吧,原来我在JPA上犯了一个新手错误,错过了这个
用户组
字段的getter和setter。通过添加它们,表现在可以按预期工作