gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:51:21 25 4
gpt4 key购买 nike

对 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);
}
}
}

并且在数据库中创建的联接表user_groups具有user_namegroupname的索引,但是groupname' s 索引是 UK_*** 并用 UNIQUE 标记,因此我无法添加 groupA, userA, groupA, userB 因为它会提示违反唯一键。

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

最佳答案

好吧,事实证明我在 JPA 上犯了一个菜鸟错误,错过了这个 userGroups 字段的 getter 和 setter。通过添加它们,表现在可以按预期工作。

关于mysql - JPA ManyToMany 连接表自动设置索引唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33601004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com