Например, у меня есть пользовательский объект в спящем режиме с этими 2 полями:
@Entity
@Table(name = "user")
public class User {
@OneToMany(fetch = FetchType.LAZY)
@JsonIgnore
private Set<User> addedUsers;
@OneToMany(fetch = FetchType.LAZY)
@JsonIgnore
private Set<User> wantToAdd;
}
addedUsers
для 2 человек, которые согласны совпадать друг с другом, в то время как wantToAdd
для пользователя, которыйотправляет запрос о дружбе другому пользователю, но еще не получил ответа.
Вот серия запросов, которые я использовал: (предположим, есть 3 пользователя a, b, c)
a add b -> good
a add c -> good
b add c -> failed
Теперь этовыдаёт "java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'UK_4l1fmdm138stci88r2ht2ggff'"
ошибку.
Таблица в MySQL верстаке
Похоже, что want_to_match_id не допускает дублирование. Как решить эту проблему?
Я также считаю, что это плохо для пользователя, но я не знаю, как я мог поступить иначе.