terça-feira, 25 de junho de 2013

org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations):

// Estrutura

public class LancamentoCc implements Serializable, Comparable<LancamentoCc>,Cloneable{
      
       @ManyToOne(fetch = FetchType.EAGER)
       @JoinColumn(name="str_nro_processo",referencedColumnName="nref", insertable=false,updatable=false)
       private AbreProcesso processo;
      
       @ManyToOne(fetch=FetchType.LAZY)
       @JoinColumn(name="int_movimento_conta", insertable=false, updatable=false)
       private MovimentoCc movimento;
}
public class AbreProcesso implements Serializable,Cloneable {
      
       @OneToMany(mappedBy="processo", cascade = CascadeType.ALL,fetch=FetchType.EAGER, orphanRemoval = true)
       @Fetch(FetchMode.SUBSELECT)
       protected Collection<LancamentoCc> movimentos = new ArrayList<LancamentoCc>();
}
public class MovimentoCc implements Serializable{
      
@OneToMany(mappedBy="movimento", cascade = CascadeType.ALL, fetch = FetchType.EAGER ,orphanRemoval=false)
       @Fetch(FetchMode.SELECT)
       private List<LancamentoCc> lancamentos = new ArrayList<LancamentoCc>();
}

// Dessa forma ocorre o erro
public
String delete(ContaReceber conta) {
       try{
              dao = new LancamentoContaDao<ContaReceber>(HibernateUtil.getSession(), ContaReceber.class);
             dao.delete(conta);                                         
       }catch (Exception e) {
              e.printStackTrace();
       }
       return null;
}

// Dessa forma funciona
public
String delete(ContaReceber conta) {
       try{
              Dao<AbreProcesso> dao = new Dao<AbreProcesso>(HibernateUtil.getSession(), AbreProcesso.class);
              AbreProcesso processo = conta.getProcesso();
              processo.getMovimentos().remove(conta);
              dao.save(processo);                                        
       }catch (Exception e) {
              e.printStackTrace()
       }
       return null;
}


Nenhum comentário:

Postar um comentário