首页 > 解决方案 > 如何使用 JPA 将“on delete set null”操作设置为外键

问题描述

在我的实体类中,我有一个这样定义的列:

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="foo_id", nullable=true, updatable=true, foreignKey=@ForeignKey(name="fk_foo_fee"))
private Foo foo;

今天在 pgAdmin 上查看外键的属性,fk_foo_fee发现它的作用是on delete no action. 问题是动作必须是 on delete set null。pgAdmin 不允许我用它的界面来改变它。那么我怎样才能用JPA改变它呢?

标签: postgresqlhibernatejpa

解决方案


你可以试试这个:

child.setParent(null);
session.delete(parent);

您还应该能够将其放入 PreRemove:

@PreRemove
private void preRemove() {
    // set foo to null here
}

推荐阅读