【发布时间】:2013-06-18 19:22:35
【问题描述】:
我有两个表:Accounts 和 Mails。
帐户中的 1 个用户可以收到一些邮件(1 : M 认证)。
- 当用户删除他的个人资料(来自
Accounts)时,休眠应该删除该用户的所有邮件(来自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 说:无法删除或更新父行:外键约束失败。那么我到底在哪里犯了错误?
更新
当我们执行 SQL 或 HQL 查询时会发生此错误,但事实并非如此。我们应该使用 entitymanager.remove 或 entitymanager.merge 方法。我的实体类是有效的。
【问题讨论】:
标签: java sql hibernate jpa one-to-many