【发布时间】:2018-10-22 16:25:03
【问题描述】:
我制作了一个包含一些用户的 Spring Boot 应用程序。这些用户可以属于 0 个、一个或多个组(为了更好的可视化,我省略了一些代码行):
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@ManyToMany
@JoinTable(
name = "group_user",
joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "group_id")}
)
private List<Group> groups = new ArrayList<>();
public User(String name, List<Group> groups) {
this.name = name;
this.groups = groups;
}
}
一个组可以包含 0 个、一个或多个用户。
@Entity
public class Group {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@ManyToMany(mappedBy = "groups")
private List<User> users = new ArrayList<>();
public Group(String name, List<User> users) {
this.name = name;
this.users = users;
}
}
我正在使用 MySQL,并且创建了 3 个表:
CREATE TABLE user (
id integer NOT NULL AUTO_INCREMENT,
name varchar(255),
PRIMARY KEY (id)
);
CREATE TABLE group (
id integer NOT NULL AUTO_INCREMENT,
name varchar(255),
PRIMARY KEY (id)
);
CREATE TABLE group_user (
user_id int NOT NULL,
group_id int NOT NULL,
PRIMARY KEY (user_id, group_id),
KEY group_id (group_id),
CONSTRAINT group_user_ibfk_1
FOREIGN KEY (user_id) REFERENCES user (id),
CONSTRAINT group_user_ibfk_2
FOREIGN KEY (group_id) REFERENCES group (id)
);
我设法通过创建这个新用户、将一个组传递给它的构造函数并调用我的 userDao.save() 方法来将一个用户链接到一个组:
userDao.save(new User(name, groups));
现在我想编辑我创建的用户并使他属于另一个组。 如何在不创建新用户的情况下做到这一点?
例如,我有这个用户,他不属于任何组:
INSERT INTO user VALUES(1, 'Jordan');
还有这些群体:
INSERT INTO group VALUES(1, 'Group 1');
INSERT INTO group VALUES(2, 'Group 2');
现在,我如何(在 Java 中)将我的用户链接到第 1 组和第 2 组?
【问题讨论】:
标签: java mysql spring-boot jpa many-to-many