¿Cómo evito que Hibernate elimine objetos secundarios no presentes en una publicación JSON?
Tengo un JPAProperty
entidad que tiene hijos (múltiplesRate
'y múltipleReservation
's). En mi aplicación de JavaScript, sacoJSON
víaREST
{property:{rates:[...], reservations[...]}
. Las tarifas y reservas son muy detalladas, por lo que cuando publico una actualización de propiedad (como cambiar el nombre), elimino las tarifas y reservas deJSON POST
carga útil. Esperaba que Hibernate simplemente ignorara las teclas faltantes, pero lamentablemente, está eliminando a todos los niños al guardar. ¿Cómo especifico Hibernar para ignorarlos si no están allí?
@Entity
public class Property {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
String name;
@OneToMany(mappedBy = "property", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
@JsonManagedReference
private Set<SeasonRate> rates = new HashSet<>();
@OneToMany(mappedBy = "property", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
private Set<Reservation> reservations = new HashSet<>();
}
Ps: mi comprensión de las cascadas es limitada, pero en realidad quiero la funcionalidad de que si alguien elimina una propiedad, debe eliminar las tarifas y reservas. Sin embargo, en ninguna parte actualizo las tarifas o las reservas a través de una propiedad completa, así que tal vez debería usar CASCADE = UPDATE. Las tarifas tienen su propio mecanismo de actualización y también las reservas.