我在连接表中具有附加列的用户和组之间存在多对多关系。它看起来像这样:当我删除一个用户时,它应该从 user_to_group(有效)中删除他的所有引用,并且他创建的所有组都应该保留,并将其 created_by 字段更新为 NULL(这不会发生,所有条目都被删除)。模式的 DDL:CREATE TABLE user ( user_id int NOT NULL AUTO_INCREMENT, first_name varchar(100) NOT NULL, last_name varchar(100) NOT NULL, username varchar(100) NOT NULL, email_address varchar(100) UNIQUE NOT NULL, phone_number varchar(100) NOT NULL, password varchar(255) NOT NULL, notification_type varchar(30) NOT NULL DEFAULT "email", date_created datetime NOT NULL, is_active bool NOT NULL DEFAULT false, CONSTRAINT user_pk PRIMARY KEY (user_id));CREATE TABLE `group` ( group_id int NOT NULL AUTO_INCREMENT, name varchar(100) NULL, date_created datetime NOT NULL, is_private bool NOT NULL DEFAULT false, created_by int NULL, CONSTRAINT group_pk PRIMARY KEY (group_id), CONSTRAINT group_user_fk FOREIGN KEY(created_by) REFERENCES user (user_id) ON DELETE SET NULL);CREATE TABLE user_to_group ( user_id int NOT NULL, group_id int NOT NULL, user_type_id int NOT NULL, is_blocked bool NOT NULL DEFAULT false, CONSTRAINT user_to_group_pk PRIMARY KEY (user_id,group_id), CONSTRAINT user_to_group_group_fk FOREIGN KEY(group_id) REFERENCES `group` (group_id), CONSTRAINT user_to_group_user_type_fk FOREIGN KEY(user_type_id) REFERENCES user_type (id), CONSTRAINT user_to_group_user_fk FOREIGN KEY(user_id) REFERENCES user (user_id));
1 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
@ManyToOne(fetch = FetchType.LAZY,
cascade = CascadeType.ALL)
@MapsId("groupId")
@JoinColumn(name = "group_id", insertable = false, updatable = false)
private Group group;
excludeCascadeType.REMOVE和 group 将完好无损。
添加回答
举报
0/150
提交
取消