У меня есть две таблицы с простым ограничением внешнего ключа, связывающим одну с другой.
Таблица A
id: Long (pk)
Таблица B
id: Long (pk)
a_id: Long (от Fk до таблицы A: id)
Если я удаляю из таблицы A, я хочу, чтобы она каскадно удалялась из таблицы B, поэтомувнешний ключ в таблице A смоделирован, как показано ниже, в сущности JPA
@OneToMany(cascade = CascadeType.ALL, mappedBy = "a_id", orphanRemoval = true)
@CascadeOnDelete
private List<B> bList;
и тот же ключ в таблице B
@JoinColumn(name = "a_id", referencedColumnName = "id")
@ManyToOne(optional = false)
private A a_id;
Однако, когдаКонтроллер jpa генерируется с помощью опции «Новые классы контроллеров JPA из классов сущностей» в NetBeans, он генерирует метод уничтожения, который проверяет потерянные записи и не может уничтожить, если таковые существуют
List<String> illegalOrphanMessages = null;
List<B> bListOrphanCheck = a.getBList();
for (B bListOrphanCheckB : bListOrphanCheck) {
if (illegalOrphanMessages == null) {
illegalOrphanMessages = new ArrayList<String>();
}
illegalOrphanMessages.add("This A (" + a + ") cannot be destroyed since the B " + bListOrphanCheckB + " in its bList field has a non-nullable a_id field.");
}
Какую ошибку я допустилв моем моделировании, поскольку я не могу каскадно удалить B, когда я удаляю A, используя метод уничтожения контроллера jpa?
спасибо ....