java – JPA不生成“on delete set null”FK限制
发布时间:2020-12-14 05:22:55 所属栏目:Java 来源:网络整理
导读:我有两个相关的条款JPA注释.报警和状态.一个报警可以有一个状态. 我需要的是能够删除一个状态,并将一个空值“传播”到已被删除的状态中的警报. 也就是说,我需要将外键定义为“on delete set null”. @Entitypublic class Alarm { @Id @GeneratedValue(strate
我有两个相关的条款JPA注释.报警和状态.一个报警可以有一个状态.
我需要的是能够删除一个状态,并将一个空值“传播”到已被删除的状态中的警报. 也就是说,我需要将外键定义为“on delete set null”. @Entity public class Alarm { @Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="sequence") @SequenceGenerator(name="sequence",sequenceName="alarm_pk_seq") private Integer id; @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="idStatus") private Status status; // get/set } @Entity public class Status { @Id @Column(name="idStatus") private Integer id; private String description; // get/set } 例: 之前: STATUS id description 1 new 2 assigned 3 closed ALARMS id status 1 1 2 2 3 2 之后(删除ID = 2的状态) STATUS id description 1 new 3 closed ALARMS id status 1 1 2 NULL 3 NULL 我使用Hibernate和PostgreSQL,从源代码自动生成数据库.我尝试过每个可能的CascadeType,没有成功. 代码中有什么问题吗?有可能用JPA吗? 解决方法
只需添加使用Hibernate注释:
@OnDelete(action=OnDeleteAction.CASCADE) 生成外键为“ON UPDATE NO ACTION ON DELETE CASCADE”;“ 但是没有动作= OnDeleteAction.SET_NULL 此外,如果可能,我不喜欢将代码绑定到Hibernate(但是如果它可以工作,我可以使用它). 这个thread讨论它.我不敢相信JPA(或Hibernate扩展)中没有一个简单的方法来生成外键. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读