Como impedir o Hibernate de excluir objetos filho não presentes em uma postagem JSON?
Eu tenho um JPAProperty
entidade que tem filhos (váriosRate
e múltiplosReservation
's). No meu aplicativo JavaScript, eu puxoJSON
através daREST
{property:{rates:[...], reservations[...]}
. As tarifas e as reservas são muito detalhadas, portanto, quando eu publico uma atualização de propriedade (como alterar o nome), excluo as tarifas e reservas doJSON POST
carga útil. Eu esperava que o Hibernate simplesmente ignorasse as chaves ausentes, mas, infelizmente, está removendo todos os filhos que estavam salvos. Como especifico para o Hibernate ignorá-los se eles não estiverem lá?
@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: Meu entendimento de cascatas é limitado, mas eu realmente quero a funcionalidade de que, se alguém excluir uma propriedade, ela deverá excluir as tarifas e reservas. Em nenhum lugar atualizo tarifas ou reservas por meio de um salvamento completo da propriedade. Talvez eu deva apenas usar CASCADE = UPDATE? As tarifas têm seu próprio mecanismo de atualização e as reservas também.