2

我班上有两个关系:

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

提前致谢

4

1 回答 1

0

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

请记录一个错误。

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

于 2013-05-06T15:39:27.463 回答