2

私のクラスには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 生成コードは、mappedBy ではなく、@OneToOne ソースの @CascadeOnDelete をチェックしているようです。しかし、あなたは正しいと思います。mappedBy を使用してマッピングをチェックする必要があります。

バグを記録してください。

回避策として、両側に追加できるはずです。

于 2013-05-06T15:39:27.463 に答える