Bom dia,
Estou fazendo fazendo um merge na Entidade Bar que tem uma lista de Foo. Quando configuro o relacionamento como especificado abaixo, é atualiazado os regitros, mas os registros orfãos não são removidos (Exemplo: Bar tem dois registros foos e estou atualizando Bar apenas com um registro foo. Gostaria que neste caso o outro registro fosse deletado).
@OneToMany(mappedBy="bar", fetch=FetchType.LAZY, cascade={CascadeType.MERGE}, orphanRemoval=true)
@SQLDelete(sql="UPDATE tb_foo SET id_bar = null WHERE id = ?")
public Set<Foo> getFoos() {
return foos;
}
Mas, quando faço desta forma, funciona:
@OneToMany(mappedBy="bar", fetch=FetchType.LAZY, cascade={CascadeType.PERSIST, CascadeType.MERGE}, orphanRemoval=true)
@SQLDelete(sql="UPDATE tb_foo SET id_bar = null WHERE id = ?")
public Set<Foo> getFoos() {
return foos;
}
Sendo que assim, quando eu for persistir Bar, Foo também será persistido, e eu não quero isso, pois os Foos já são pré-existentes e desta forma dá erro de primary key duplicada. Alguém poderia me explicar ou ter uma solução para este caso? Obrigado.
