Я сделал приложение 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?