У меня возникают проблемы при удалении потерянных узлов с использованием Hibernate со следующим отображением
@OneToMany(fetch = FetchType.LAZY, mappedBy = "seizure",orphanRemoval=true)
@JsonManagedReference
@Cascade({CascadeType.ALL,CascadeType.DELETE_ORPHAN})
public Set<SubstanceIdentified> getSubstanceIdentifieds() {
return this.substanceIdentifieds;
}
отображение .hbm.xml выглядит следующим образом
<set name="substanceIdentifieds" table="substance_identified" inverse="true" lazy="true" fetch="select" cascade="all-delete-orphan">
<key>
<column name="seizure_id" not-null="true" />
</key>
<one-to-many class="org.unodc.incbszdb.db.base.SubstanceIdentified" />
</set>
Я использую Spring MVC и Джексона длясделать отображение JSON в Hibernate Class
@RequestMapping(value = { "/save.json" }, method = RequestMethod.POST)
public ModelMap save(@RequestBody Seizure seizureObj, Model model) {
seizureService.saveOrUpdate(seizureObj);
ПРИМЕЧАНИЕ:
seizureObj
имеет только две NEW записив его substanceIdentifieds
Set.
Свойство id seizureObj
установлено на существующую запись в БД.Но когда я вызываю saveOrUpdate, существующие записи (сироты) не удаляются.
Служба захвата использует Spring 10 * *
getHibernateTemplate.saveOrUpdate
Я читал темы о
JPA CascadeType.ALL не удаляет сирот
Спящий режим удаляет сирот при обновлении коллекции
Кажется, мои настройки верны.
Нужно ли
- загружать соответствующий объект из БД в фиктивный объект-объект сначала (с идентификатором, который имеет мой десериализованный объект)
- удалить ссылки на другой объект
- сохранить изменения
- обновить с моим десериализованным объектом
?