Возникла проблема при удалении записи, на которую ссылается другая таблица.
Это пример кода (самый простой сценарий):
@Entity
@Table(name = "user")
public class User
{
@Id
@GeneratedValue(generator="user_id_seq", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name="user_id_seq", sequenceName="user_id_seq")
@Column(name = "id", nullable = false)
private int id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
private Set<UserLog> userLogSet;
// Other attributes
// Getters/setters
}
@Entity
@Table(name = "user_log")
public class UserLog
{
@Id
@GeneratedValue(generator="user_log_id_seq", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name="user_log_id_seq", sequenceName="user_log_id_seq")
@Column(name = "id", nullable = false)
private int id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id", nullable = false)
private User user;
// Other attributes
// Getters/setters
}
Всякий раз, когда я пытаюсь удалить запись из таблицы «user», я получаю следующую ошибкуиз postgreSQL:
ОШИБКА: обновление или удаление в таблице «пользователь» нарушает ограничение внешнего ключа «fk228a019fd2495d20» в таблице «user_log»Подробно: на ключ (id) = (5) все еще ссылаются из таблицы "user_log".
Что я делаю не так?
Спасибо!
Обновление: Я попытался написать небольшой пример, его можно найти здесь .После запуска приложения с Tomcat схема базы данных создается автоматически (см. Подробности подключения в /src/main/webapp/WEB-INF/jdbc.properties).При посещении http://localhost:8080 некоторые данные вставляются в базу данных.Если я пытаюсь удалить любого teacher
, на которого есть ссылка в таблице student
(используя phpPgAdmin), я получаю ошибку, аналогичную приведенной выше.