gpt4 book ai didi

java - JPA 删除注释

转载 作者:行者123 更新时间:2023-12-01 23:45:53 27 4
gpt4 key购买 nike

这是我的设置:

public class Record {
//Stuff
}

public class RecordNotification {
@ What Comes Here?
private Record record;
}

当我删除记录类的对象时,我希望包含此记录的记录通知类的对象也被删除。始终最多有 1 个 RecordNotification 类型的对象包含相同的 Record。 Record 不知道 RecordNotification。如果删除 RecordNotification,则不会发生任何其他情况。

最佳答案

您必须向 Record 添加一个指向相关 RecordNotification 的属性。然后您可以将其标记为级联删除。像这样:

@Entity
public class Record {
@Id
private int id;
@OneToOne(mappedBy="record", cascade={CascadeType.REMOVE})
private RecordNotification notification;

public Record(int id) {
this.id = id;
}

protected Record() {}
}

@Entity
public class RecordNotification {
@Id
private int id;
@OneToOne
private Record record;

public RecordNotification(int id, Record record) {
this.id = id;
this.record = record;
}

protected RecordNotification() {}
}

生成的 DDL 为:

create table Record (
id integer not null,
primary key (id)
);

create table RecordNotification (
id integer not null,
record_id integer,
primary key (id)
);

alter table RecordNotification
add constraint FKE88313FC6EE389C1
foreign key (record_id)
references Record;

我已经验证这是否有效:创建一个 Record 和一个 RecordNotification,提交,然后删除 Record 并注意到 >RecordNotification 消失。

我使用的是 Hibernate 4.1.4.Final。如果这对您不起作用,那么我怀疑 EclipseLink 中存在错误或行为不当。

关于java - JPA 删除注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17066322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com