2012-11-22 16 views
9

私は最初にCascadeType.REMOVEでテーブル内の外部キーを削除できますが、私は例外があります。しかし、@CascadeOnDeleteであれば問題ありません.2つのアノテーションの違いは何ですか?@CascadeOnDeleteアノテーションとCascadeType.REMOVEアノテーションの違いは何ですか?

EDIT:私は削除にDataNucleusのcomment.Cascadeを見てきましたが、使用するどのように良いアイデア疑問を提起.Which org.eclipse.persistence.annotations.CascadeOnDeleteから来ています。

+1

例外はありますか? – Ilya

+1

@CascadeOnDeleteはJPAの一部ではないので、 – DataNucleus

+1

のどこから来たのかを教えてください。 'DELETE on table 'XXX'はキー(xxx)の外部キー制約 'YYY'に違反しました。ステートメントがロールバックされました。 ' – npocmaka

答えて

6

ORMツールでカスケードを処理するときにCascadeType.Removeを使用すると、カスケードをデータベースで処理する場合は、@ CascadeOnDelete.butを使用できます。ただし、@CascadeOnDeleteを使用している場合は、使用しているデータベースがカスケードをサポートする必要があります。

+0

ありがとうございます。可能であれば、CascadeOnDeleteを避ける方がいいです.... – npocmaka

+3

あなたのコードをJPA仕様に厳密に準拠させたいCascadeOnDelete.Butを使用すべきではありません。JPAプロバイダを変更しない場合は、CascadeonDeleteを使用すると便利かもしれません。詳細については、[link](http://wiki.eclipse.org/EclipseLink/Examples/JPA/DeleteCascade)を参照してください。 –

関連する問題