Hibernate не генерирует каскад

у меня есть набор hibernate.hbm2ddl.auto создать так, чтобы Hibernate создавал таблицы в mysql для меня.

однако, похоже, что hibernate правильно добавляет Cascade о ссылках в таблице. однако он работает, когда я, например, удаляю строку, и у меня есть каскад удаления как Hibernate annotation. Итак, я предполагаю, что это означает, что Hibernate читает раздражение во время выполнения и выполняет каскадирование вручную?

это нормально поведение?

например:

@Entity
class Report {
    @OneToOne(cascade = CascadeType.ALL)
    public File getPdf() {
    return pdf;
}
}

здесь я установил cascade для всех. Однако при запуске 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

1 ответов


на CascadeType и @Cascade определения не переведенные в DDL, они говорят Hibernate, как вести себя при выполнении операции.

, есть @OnDelete что вы можете использовать на родителе, чтобы получить внешний ключ, созданный с соответствующим предложением on delete cascade.