2017-05-16 12 views
0

の関係を持つ注釈@OnDeleteに問題があります。私はそれを実行すると@OnDelete with @OneToMany

public class Patent { 

    @OneToMany 
    @JoinCollumn(name = "parent_id") 
    @OnDelete(action = OnDeleteAction.CASCADE) 
    private List<Child> children; 

} 

public class Child { 
} 

私はこのエラーを取得する:「だけ逆一対多関連はon-delete="cascade"を使用することができます」。双方向の関係なく、機能を得るためにコードをどのように変更する必要がありますか?私はそれが適切な注釈と@ManyToOneリレーションをChildクラスに追加することで解決できることを知っていますが、私はこのソリューションを使用したくありません。

編集:これは、エクスポートされたddlスキーマの外部キー制約に対して "on delete delete cascade"を生成する必要があることを目的としています。

答えて

0

必要なのは、OneToMany関係にorphanRemovalパラメータを使用することです。参考までにhttps://docs.oracle.com/cd/E19798-01/821-1841/giqxy/を参照してください。

例:

@OneToMany(mappedBy="customer", orphanRemoval="true") 
public List<Order> getOrders() { ... } 

しかし、私はその後、PARENT_IDとしてJoinCollumnを使用して参照を設定し、ManyToOneとしてマーク関係、このような関係のためにあなたの子供のクラスに特許フィールドを追加する必要があり、あなたのマッピングは非常に間違っていると思います。特許内のmappedByとorphanRemovalオプションを使用すると、使いやすさはあなたの望むものと同じになります。

関連する問題