我有簡單的OneToOne關係:
數據 < - >TherapyResultJPA 2.0外鍵約束
我想表達以下約束 與JPA。
- 如果如果TherapyResult實體被移除的數據實體獲取刪除相關TherapyResult應該被刪除,太
- 相關數據實體應保持在DB
第一個約束與JPA非常容易,因爲我可以添加CascadingType.REMOVE
@OneToOne(cascade = { CascadeType.REMOVE, CascadeType.REFRESH })
private TherapyResult therapyResult;
對於第二個約束我想補充像
@JoinColumn(columnDefinition = "DATA_ID BIGINT CONSTRAINT THERAPYRESULTDTAID FOREIGN KEY (DATA_ID) REFERENCES DATA (ID) ON DELETE SET NULL")
東西但是這不工作。 OpenJPA似乎有些相似之處,但我想使用JPA 2.0和EclipseLink。 OpenJPA ForeignKey。
另一種解決方案是使用@PreRemovedescribed here,它工作但對我來說看起來有點「無最佳實踐」。然而,只是一種感覺。
我的設置是: 的Eclipse 3.7.1 的EclipseLink 2.3 的Apache Derby 10.8.3和/或HSQLDB
任何幫助表示讚賞, 繆奇
這似乎並不有效,因爲JPA 2.1:HTTPS://docs.jboss。 org/hibernate/jpa/2.1/api/javax/persistence/ForeignKey.html – Piohen 2014-10-08 10:37:47