0
私は、Angular/Spring/Oracleプロジェクト内でORMツールとしてHibernate 4を使用しています。Hibernate @OneToManyは、基礎となるコレクションからの削除時に子を削除しません。
@OneToMany(mappedBy = "portfolio", fetch = FetchType.EAGER, cascade = { CascadeType.ALL }, orphanRemoval = true)
@JsonManagedReference
private Set<PortfolioContributors> portfolioContributors;
と私の子エンティティPortfolioContributors
で@ManyToOne
関係:
Portfolio
における双方向
@OneToMany
関係を有しています。
@ManyToOne
@JoinColumn(name = "PORTFOLIO_ID", referencedColumnName = "PORTFOLIO_ID", foreignKey = @ForeignKey(name = "FK_PORTFOLIO_CONTRIBUTORS"), nullable = false)
@JsonBackReference
private Portfolio portfolio;
問題は、親クラスの子エンティティのセットからエントリを削除する場合です。データベースからの削除/削除は設定されません。
この動作を実現するにはどうすればよいですか?
こんにちは@Predrag、私はちょうど(ポートフォリオ)を保存休止をしていますし、ポートフォリオオブジェクトは、すべての有効なportfolioContribuotrsのセットが含まれています。 ポートフォリオなどからportfolioContributorsを手動で削除していません PortfolioオブジェクトのSetにない場合、portfolioContributorを自動的に削除します。 –
Hibernateは双方向関係の反対側を処理しません。あなたはそれを自分で行う必要があります。あなたのユースケースは少し特殊ですが、削除するPortfolioContributorsインスタンスで 'setPortfolio(null)'を実行する必要があります。関係の所有側であるため、保存する必要があります。 –
[Hibernateのドキュメント](https://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/example-parentchild.html#example-parentchild-cascades)のコード例を参照してください。まったく同じことではないが、十分に近い。同様に[this SO thread](http://stackoverflow.com/a/23926548/4074715)をチェックしてください。 –