我班上有两个关系:

@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。但是我认为您是正确的,应该使用maptedBy检查映射。

请记录一个错误。

作为解决方法,您应该可以将其添加到双方。

10-06 02:17