Olá,
Estou com problemas ao alterar uma collection com o hibernate.
As classes envolvidas são as seguintes:
@Entity
@Table(name="descontos")
public class Desconto extends ModeloGenerico {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="cp_desconto")
private int codigo;
@OneToOne
@JoinColumn(name="ce_produto")
private Produto produto;
@Column(name="tx_descricao")
private String descricao;
@Column(name="dt_inclusao")
private Date dataInclusao;
@Column(name="fg_permite_alteracao")
private boolean permiteAlteracao;
@OneToMany(cascade=CascadeType.ALL, mappedBy="desconto")
private Set<Indice> indices;
...
@Entity
@Table(name="descontos_indices")
public class Indice implements Comparable<Indice>, Serializable{
@Id
@Column(name="vl_desconto")
private double valor;
@Id
@ManyToOne
@JoinColumn(name="ce_desconto")
private Desconto desconto;
@Column(name="vl_aliquota")
private double aliquota;
...
Estou adicionando/alterando objetos da seguinte forma:
Transaction transacao = sessao.beginTransaction();
sessao.saveOrUpdate(objeto);
transacao.commit();
O problema acontece quando altero os indices de um objeto Desconto. Por exemplo: adiciono um desconto com 2 indices, depois altero este desconto (indices = new TreeSet()…) e deixo apenas 1 indice, quando salvo isso no banco é adicionado mais um indice na tabela de indices, mas eu gostaria que os indices anteriores fossem apagados.
Com o JDBC em casos como esse antes de alterar a tabela de descontos eu apagaria todos os indices e depois adicionaria de novo, com o Hibernate qual a melhor maneira de se fazer isso?
Obrigado.