Hibernate不会生成级联

She*_*ari 8 mysql orm hibernate jpa cascade

我有一个hibernate.hbm2ddl.auto创建的集合,以便Hibernate为我创建mysql中的表.

但是,似乎hibernate没有正确添加Cascade表中的引用.但是,当我删除一行时,它确实有效,并且我有一个删除级联作为hibernate注释.所以我想这意味着Hibernate在运行时读取annoation,并手动执行级联?

这是正常的行为吗?

例如:

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

在这里,我将cascade设置为ALL.但是,在跑步时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 |
Run Code Online (Sandbox Code Playgroud)

它没有说任何关于其他外键的级联.在我看来,它应该添加了ON DELETE CASCADE ON DELETE UPDATE

Pas*_*ent 6

CascadeType@Cascade定义翻译成DDL,他们告诉休眠时如何进行操作的行为.

但是,@OnDelete您可以使用父级来获取使用相应的on delete cascade子句创建的外键.