【问题标题】:Eclipselink - @CascadeOnDelete doesn't work on @OneToOne relationsEclipselink - @CascadeOnDelete 不适用于 @OneToOne 关系
【发布时间】:2013-03-07 14:59:09
【问题描述】:

我班上有两个亲戚:

@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 没有?

提前致谢

【问题讨论】:

    标签: java jpa jdbc eclipselink


    【解决方案1】:

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

    请记录一个错误。

    作为一种解决方法,您应该能够将其添加到双方。

    【讨论】:

    • 嗨,詹姆斯,感谢您的回答。但是你的想法,使用这两种说法,都行不通!您可以在生成的 DDL 代码中看到这一点。我认为这也是一个错误。
    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 2016-05-24
    • 2016-12-10
    • 1970-01-01
    相关资源
    最近更新 更多