【问题标题】:JPA ManyToMany join table automatically set index uniqueJPA ManyToMany连接表自动设置索引唯一
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多