私は、ほぼすべての関係は、以下の注釈を持った上でのコードベースを継承していますJPAのカスケード= REMOVEとHibernateの@OnDeleteを併用していますか?
@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, mappedBy = "someThing")
@OnDelete(action = OnDeleteAction.CASCADE)
は、今私は@OnDelete
が最初の場所で何をするかを理解トラブルを抱えています。 Hibernate: OnDelete vs cascade=CascadeType.REMOVEは興味深いですが、残念なことに答えはなく、@OnDelete
のJavaDocは特に意味がありません。
他の質問から、OnDeleteアノテーションによってDBがカスケード化されているように見えますが、カスケードディレクティブ@OneToMany
はORMにしましょう。しかし、それらを一緒に使用する目的は何でしょうか?
@OneToMany
のカスケードディレクティブは、ORM実装で実際にDBベースのカスケードを生成できないのですか?
動作は全く同じではないようです。 @OneToMany(...)@OnDelete(action = OnDeleteAction.CASCADE)オブジェクトのドアでは、家を削除するとすべてのドアが削除されるようですが、ドアを削除してもその家は削除されないようです。 – Bruno
'@OneToMany List
同意しない。ユーザーの視点での '' CascadeType.REMOVE'''と '' @ OnDelete'''の最大の違いは、 '' @ OnDelete''はJPAQL(DBカスケードに基づいているため)、 '' 'CascadeType.REMOVE'''はJPAQLでは動作しません。 – okwap