我班上有两个关系:
@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的关系没有?
提前致谢
答案 0 :(得分:1)
EclipseLink中的当前DDL生成代码似乎是检查@OneToOne源上的@CascadeOnDelete,而不是mappedBy。但我认为你是对的,应该使用mappedBy检查映射。
请记录错误。
作为一种解决方法,您应该能够将其添加到双方。