У меня есть набор hibernate.hbm2ddl.auto
создать так, чтобы Были в спящем режиме, составляет таблицы в mysql для меня.
Однако не кажется, что в спящем режиме, правильно добавляет Cascade
на ссылках в таблице. Это действительно однако работает, когда я, например, удаляю строку, и у меня есть удалить каскад, как в спящем режиме аннотация. Таким образом, я предполагаю, что означает, что В спящем режиме, читает annoation на времени выполнения, и выполните расположение каскадом вручную?
То нормальное поведение?
Например:
@Entity
class Report {
@OneToOne(cascade = CascadeType.ALL)
public File getPdf() {
return pdf;
}
}
Здесь я установил каскад на ВСЕ. Однако при выполнении show create table Report
Report | CREATE TABLE `Report` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`pdf_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK91B14154FDE6543A` (`pdf_id`),
CONSTRAINT `FK91B14154FDE6543A` FOREIGN KEY (`pdf_id`) REFERENCES `File` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
Это ничего не говорит о расположении каскадом другого затем внешний ключ. По-моему, это должно было добавить ON DELETE CASCADE ON DELETE UPDATE
Определения CascadeType
и @Cascade
не переведены в DDL, они сообщают Hibernate, как вести себя при выполнении операции. выполненный.
Однако существует @OnDelete
, который можно использовать для родительского элемента, чтобы получить внешний ключ, созданный с помощью соответствующего предложения каскада при удалении.