2013-03-07 44 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