Eclipselink-@CascadeOnDelete在@OneToOne关系上不起作用 [英] Eclipselink - @CascadeOnDelete doesn't work on @OneToOne relations
问题描述
我班上有两个关系:
@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,而不是mappingBy.但是我认为您是正确的,应该使用maptedBy检查映射.
请记录错误.
作为解决方法,您应该可以将其添加到两侧.
I have two relations in my class:
@OneToOne(mappedBy = "poi", cascade = { CascadeType.ALL })
@CascadeOnDelete
protected PoiDescription description;
@OneToMany(mappedBy = "poi", cascade = { CascadeType.ALL })
@CascadeOnDelete
protected List<PoiAdditional> additionals = new ArrayList<>();
In my generated DDL (for postgres) I becomes:
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
Why the relation @OneToMany has the statement "ON DELETE CASCADE" and the relation @OneToOne has not?
Thanks in advance
The current DDL generation code in EclipseLink seems to be check for the @CascadeOnDelete on the @OneToOne source, not the mappedBy. But I think you are correct, it should be checking the mapping using the mappedBy.
Please log a bug.
As a workaround you should be able to add it to both sides.
这篇关于Eclipselink-@CascadeOnDelete在@OneToOne关系上不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!