[英]How to realize ON UPDATE CASCADE and ON DELETE CASCADE in Hibernate(JPA)?
我有两个表: Accounts
和Mails
。
帐户中的1个用户可以收到一些邮件( 1:配对 )。
Accounts
删除其个人资料时,hibernate应该删除该用户的所有邮件( Mails
)。 Accounts
具有ID(PK)和其他列。 Mails
具有id(PK),user_id(FK:user_id-> Accounts.id)和其他列。 如何在Hibernate(或JPA)上实现上述实现?
我的实体类如下:
//Accounts class
@OneToMany(mappedBy = "accounts", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Mails> mails;
//Mails class
@ManyToOne
@JoinColumn(name="user_id" , referencedColumnName="id", insertable=false, updatable=false)
private Accounts accounts;
但是,当我编辑或删除某些父行时,hibernate说:无法删除或更新父行:外键约束失败。 那么我到底在哪里犯错?
UPDATE
当我们执行SQL或HQL查询时会发生此错误,但并非如此。 我们应该使用entitymanager.remove或entitymanager.merge方法。 我的实体类别有效。
看来您在帐户和邮件之间存在双向关系。 在帐户类中,您必须使用类似以下的方式:
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "accounts")
private Set<Mails> mails;
双向需要属性mappedby。 提示:我认为,仅在确实需要时才应使用双向关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.