0
我使用Hibernate 4作爲Angular/Spring/Oracle項目中的ORM工具。Hibernate @OneToMany不刪除子項從底層集合刪除
我有我的父母Portfolio
如下類別的雙向@OneToMany
關係:
@OneToMany(mappedBy = "portfolio", fetch = FetchType.EAGER, cascade = { CascadeType.ALL }, orphanRemoval = true)
@JsonManagedReference
private Set<PortfolioContributors> portfolioContributors;
和我的孩子實體PortfolioContributors
一個@ManyToOne
關係。
@ManyToOne
@JoinColumn(name = "PORTFOLIO_ID", referencedColumnName = "PORTFOLIO_ID", foreignKey = @ForeignKey(name = "FK_PORTFOLIO_CONTRIBUTORS"), nullable = false)
@JsonBackReference
private Portfolio portfolio;
問題是,如果我從父類中的子實體集合中刪除條目。它不會從數據庫中刪除/刪除。
如何實現這種行爲?
@Predrag嗨,我只是做了Hibernate的保存(組合)和投資組合對象包含了一組所有有效portfolioContribuotrs的。 我不是從投資組合等手動移除portfolioContributor。 如果portfolioContributor未包含在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)。不完全一樣的東西,但足夠接近。 Aslo看看[這個SO線程](http://stackoverflow.com/a/23926548/4074715)。 –