2016-01-16 4 views
1

У меня есть две таблицы с OneToMany соотношениемHibernate удалить из onetomany

class ServiceProvider {

...

@OneToMany(fetch=FetchType.EAGER,mappedBy="serviceProvider", cascade={CascadeType.ALL,CascadeType.REMOVE},orphanRemoval = true) @OnDelete(action=OnDeleteAction.CASCADE) private List serviceCenters; ...

}

class ServiceCenterDetails {

... //bi-directional many-to-one association to ServiceProviderDomainMap @ManyToOne @JoinColumn(name="SERVICE_PROVIDER_ID") private ServiceProvider serviceProvider;

...

}

Я пытаюсь удалить предоставить строку. Но я получаю ниже ошибки:

Вызванный: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Невозможно удалить или обновить родительскую строку:. Ограничение внешнего ключа не удается (fixolineservice_center_details, скованность FK_qvahoxeovx9vmwl6mcu2c0lyw FOREIGN KEY (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(); 

может кто-то пожалуйста помочь ее решению?

ответ

0

Сообщение об ошибке довольно ясно: есть ссылки на внешние ключи к ServiceProvider, которые вы пытаетесь удалить. Удалить ServiceCenterDetails first:

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

К сожалению, у меня нет строк в таблице ServiceCenterDetails. Есть ли что-нибудь еще, что может пойти не так? – Deepak

+0

Исключение говорит иначе. Возможно, вы вставляете их в ту же транзакцию, в которой вы удаляете 'ServiceProvider'? –