Я устанавливаю API Springboot, который использует спящий режим для связи с базой данных. У меня есть таблица User, и каждый пользователь должен иметь возможность следить за другими пользователями. Я не имел опыта работы с hibernate, поэтому через некоторое время я получил что-то, что, казалось бы, работало, за исключением того, что я не могу удалить пользователя, если за этим конкретным пользователем следят другие пользователи. Это из-за ограничения внешнего ключа.
Вот как выглядит пользователь:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(unique = true)
@JsonProperty
private int id;
@Column(unique = true)
@JsonProperty
private String email;
@Column
@JsonProperty
private String hashedSaltedPassword;
@Column
@JsonProperty
private String salt;
@Column
@JsonProperty
private String firstName;
@Column
@JsonProperty
private String lastName;
@JsonProperty
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "User_Follows", schema = "todo", joinColumns=@JoinColumn(name="user_id"))
private List<User> follows;
Это создает пользовательскую таблицу и отдельную таблицу с именем User_Follows. Эта таблица имеет user_id и follow_id, который является идентификатором пользователя, за которым следуют. Это почти то, чего я хочу.
Удаление пользователя работает идеально, если за ним не следят другие пользователи (если пользователь не указан в столбце follow_id).
Но выдает следующую ошибку, если это так:
The DELETE statement conflicted with the REFERENCE constraint "FKc38v25qxktm9b0r7lg1s2t1tl". The conflict occurred in database "dbi390100_db", table "todo.User_Follows", column 'follows_id'.
Этого не должно быть, я хочу, чтобы все строки, в которых существует userId таблицы User_Follows, удалялись при каждом удалении пользователя.
Есть ли решение для этого?