Hibernate 不生成级联
问题:Hibernate 不生成级联 我有一组hibernate.hbm2ddl.auto要创建,以便 Hibernate 为我在 mysql 中创建表。 但是,hibernate 似乎没有正确地将Cascade添加到表中的引用上。 但是当我删除一行时它确实有效,并且我有一个删除级联作为休眠注释。所以我猜这意味着 Hibernate 在运行时读取注释,并手动执行级联? 这是正常的行为吗? 例如:
·
问题:Hibernate 不生成级联
我有一组hibernate.hbm2ddl.auto
要创建,以便 Hibernate 为我在 mysql 中创建表。
但是,hibernate 似乎没有正确地将Cascade
添加到表中的引用上。 但是当我删除一行时它确实有效,并且我有一个删除级联作为休眠注释。所以我猜这意味着 Hibernate 在运行时读取注释,并手动执行级联?
这是正常的行为吗?
例如:
@Entity
class Report {
@OneToOne(cascade = CascadeType.ALL)
public File getPdf() {
return pdf;
}
}
在这里,我将级联设置为 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 |
除了外键之外,它没有说任何关于级联的内容。在我看来,它应该添加了ON DELETE CASCADE ON DELETE UPDATE
解答
CascadeType
和@Cascade
定义没有翻译成 DDL,它们告诉 Hibernate 在执行操作时如何表现。
但是,您可以在父级上使用@OnDelete
来获取使用适当的 on delete cascade 子句创建的外键。
更多推荐
已为社区贡献23584条内容
所有评论(0)