2013-03-07 64 views
1

我在我的类中的两个关系工作:的EclipseLink - @CascadeOnDelete不上@OneToOne关系

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

在此先感谢

回答

1

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

请注册一个bug。

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

+0

嗨,詹姆斯,谢谢你的回答。但是,你的想法,使用这两个陈述,不工作!你可以在生成的DDL代码中看到它。 我认为这也是一个错误。 – Daniel 2013-07-26 09:23:02