java - Eclipselink - @CascadeOnDelete 不适用于 @OneToOne 关系

标签 java jpa jdbc eclipselink

我类有两个亲戚:

@OneToOne(mappedBy = "poi", cascade = { CascadeType.ALL })
@CascadeOnDelete
protected PoiDescription description;

@OneToMany(mappedBy = "poi", cascade = { CascadeType.ALL })
@CascadeOnDelete
protected List<PoiAdditional> additionals = new ArrayList<>();

在我生成的 DDL(针对 postgres)中,我变成:

ALTER TABLE POI_DESCRIPTION ADD CONSTRAINT FK_POI_DESCRIPTION_POI_ID FOREIGN KEY (POI_ID) REFERENCES POI (ID)
ALTER TABLE POI_ADDITIONAL ADD CONSTRAINT FK_POI_ADDITIONAL_POI_ID FOREIGN KEY (POI_ID) REFERENCES POI (ID) ON DELETE CASCADE

为什么关系@OneToMany 有语句“ON DELETE CASCADE”而关系@OneToOne 没有?

提前致谢

最佳答案

EclipseLink中当前的DDL生成代码似乎是检查@OneToOne源上的@CascadeOnDelete,而不是mappedBy。但我认为你是对的,应该使用mappedBy检查映射。

请记录错误。

作为解决方法,您应该能够将其添加到两侧。

关于java - Eclipselink - @CascadeOnDelete 不适用于 @OneToOne 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15274428/

相关文章:

java - 私有(private)接口(interface)方法的方法引用

jakarta-ee - 使用 JPA Play Framework : Solution for storing a Map, 键值

java - 当 child 被 orphanRemoval 删除时,EntityListener 不起作用

scala - Spark JDBC仅返回带有列名的数据帧

java - 添加第二列导致错误

java - 为什么Java中这段代码会抛出nullpointerException?

java - 计算Java中每小时出现的次数

java - 带有 onclick 事件的 return for 循环示例

Java持久化: Cannot add or update a child row: a foreign key constraint fails

java - 将字符串转换为 TIMESTAMP 以在表中插入时间?