这里对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_groups
和user_name
的索引,但groupname
的索引是英国_ ***和标记为UNIQUE,因此我无法添加groupname
,groupA, userA
,因为它会抱怨违反唯一键。
我想将两个值的组合作为连接表的唯一键,所以是否有任何特定的配置我在这里丢失或者我用错了?
答案 0 :(得分:0)
好吧,事实证明我在JPA上犯了一个错误的错误,错过了userGroups
字段的getter和setter。通过添加它们,表现在正如预期的那样工作。