2015-01-09 4 views
6

Я искал ответ, но не смог получить его правильно. В чем разница между CascadeType.ALL, cascade = CascadeType.REMOVE, orphanRemoval, когда мы установили FetchType.EAGER на @OneToMany отношениях? Как только у меня возникла проблема при удалении записей. Я использовал следующийВ чем разница между CascadeType.ALL, cascade = CascadeType.REMOVE и orphanRemoval

@OneToMany(cascade = CascadeType.ALL, mappedBy = "companyEntity", fetch = FetchType.EAGER) 
Set<EmployeeEntity> employeeEntities; 

Когда я попытался удалить запись сотрудника, он не показывал мне никаких исключений и не deleteing записи. Но когда я изменил CascadeType.ALL на CascadeType.REMOVE, тогда он работал. Почему он не работал с CascadeType.ALL скорее с CascadeType.REMOVE?

Спасибо за простое объяснение заранее;)

ответ

2

This объясняет часть вашего вопроса.

«OrphanRemoval = истинный» Vs «CascadeType.REMOVE»

Разница между этими двумя параметрами в ответ на удаление дочерние объекты из коллекции указываемой родительского объекта.

Если orphanRemoval = true, то удаленный адрес экземпляра автоматически удаляется. Если указан только каскад = CascadeType.REMOVE , автоматическое действие не предпринимается, так как удаление отношения не является удаляет операцию.