我有两个具有 OneToMany 关系的表
类服务提供者{
...
@OneToMany(fetch=FetchType.EAGER,mappedBy="serviceProvider",
级联={CascadeType.ALL,CascadeType.REMOVE},orphanRemoval = true)
@OnDelete(action=OnDeleteAction.CASCADE) 私有
列出服务中心; ...
}
类服务中心详细信息{
... //双向多对一关联
ServiceProviderDomainMap @ManyToOne
@JoinColumn(name="SERVICE_PROVIDER_ID") 私有服务提供商
服务提供者;
...
}
我正在尝试删除提供行。但我收到以下错误:
引起原因:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(fixoline
.service_center_details
, 约束FK_qvahoxeovx9vmwl6mcu2c0lyw
外键(SERVICE_PROVIDER_ID
) 参考service_provider
(ID
))
下面是我正在尝试的方法
String hql = "DELETE FROM ServiceProvider WHERE id = :providerId";
Query query = sessionFactory.getCurrentSession().createQuery(hql);
query.setParameter("providerId",providerId);
int result = query.executeUpdate();
有人可以帮忙解决吗?
有两点,
你为什么使用@OnDelete
当你使用CascadeType.ALL
in @oneToMany
? CascadeType.ALL
当父实体被删除时,子实体也会被删除。
@OnDelete
主要用于子实体@ManyToOne
不然的话。
尝试使用任何选项并检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)