首页 文章

从onetomany删除Hibernate

提问于
浏览
2

我有两个表与OneToMany关系

class ServiceProvider {... @OneToMany(fetch = FetchType.EAGER,mappedBy =“serviceProvider”,cascade = {CascadeType.ALL,CascadeType.REMOVE},orphanRemoval = true)@OnDelete(action = OnDeleteAction.CASCADE)private list serviceCenters ; ...}类ServiceCenterDetails {... //与ServiceProviderDomainMap @ManyToOne @JoinColumn(name =“SERVICE_PROVIDER_ID”)私有ServiceProvider serviceProvider的双向多对一关联; ...}

我想删除提供行 . 但我得到以下错误:

引起:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败( fixoline . service_center_details ,CONSTRAINT FK_qvahoxeovx9vmwl6mcu2c0lyw FOREIGN KEY( SERVICE_PROVIDER_ID )REFERENCES service_providerID ))

以下是我尝试的方式

String hql =“DELETE FROM ServiceProvider WHERE id =:providerId”;
查询query = sessionFactory.getCurrentSession() . createQuery(hql);
query.setParameter( “providerId”,providerId);

int result = query.executeUpdate();

有人可以帮忙解决它吗?

2 回答

  • 0

    错误消息非常明确:您尝试删除 ServiceProvider 的外键引用 . 首先删除 ServiceCenterDetails

    delete from ServiceCenterDetails where serviceProvider.id = :providerId
    
  • 0

    有两个铃,

    • 为什么在 @oneToMany 中使用 CascadeType.ALL 时使用 @OnDeleteCascadeType.ALL 将在删除父项时删除子实体 .

    • @OnDelete 主要用于子实体 @ManyToOne 否则 .

    尝试任何选项并检查 .

相关问题