Здравствуйте. У меня есть следующие две сущности
@Entity
public class DocumentCollection {
@Id
@GeneratedValue
private Long id;
@OneToMany(targetEntity=Document.class,mappedBy="documentCollection",cascade=javax.persistence.CascadeType.ALL)
@OnDelete(action = OnDeleteAction.CASCADE)
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private Set<Document> documents;
...
}
И:
@Entity
public class Document {
@Id
@GeneratedValue
private Long id;
@ManyToOne
private DocumentCollection documentCollection;
...
}
При удалении DocumentCollection все документы, на которые есть ссылки, также должны быть удалены.Но я получаю эту ошибку:
Cannot delete or update a parent row: a foreign key constraint fails (`tms_db`.`document`, CONSTRAINT `FK3737353BEB85533C` FOREIGN KEY (`documentCollection_id`) REFERENCES `documentcollection` (`id`))
Я также попытался поместить аннотацию @OnDelete в класс документа, но не сработал.Так чего мне не хватает?К вашему сведению, я использую Hibernate 3.6.0.Final.
ОБНОВЛЕНИЕ: Я сделал дамп схемы mysql и заметил, что в схеме таблицы документов нет оператора ON DELETE CASCADE.Hibernate генерирует только ограничения внешнего ключа, что приводит к указанной ошибке.У кого-нибудь есть идея, почему hibernate НЕ генерирует оператор «ON DELETE CASCADE»?
Надеюсь, кто-нибудь может мне помочь, спасибо