Ajuda com update no hibernate

0 respostas
fabioebner
Pessoal tenho as seguintes classes: TbAtoNatureza
@Entity
@Table(name = "tb_ato_natureza", catalog = "db_dnaso", schema = "db_notas")
@SequenceGenerator(sequenceName="tb_ato_natureza_cd_ato_natureze_seq",allocationSize=1, initialValue=0, name = "tb_ato_natureza_cd_ato_natureze_seq")
@NamedQueries({@NamedQuery(name = "TbAtoNatureza.findByNmDivisor", query = "SELECT t FROM TbAtoNatureza t WHERE t.nmDivisor = :nmDivisor")})
public class TbAtoNatureza implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY, generator="tb_ato_natureza_cd_ato_natureze_seq")
    @Basic(optional = false)
    @Column(name = "cd_ato_natureze", nullable = false)
    private Integer cdAtoNatureze;
    @Column(name = "nm_tabela_custa", length = 250)
    private String nmTabelaCusta;
    @Column(name = "nm_divisor", length = 250)
    private String nmDivisor;
    @JoinColumn(name = "cd_ato", referencedColumnName = "cd_ato")
    @ManyToOne
    private TbAto cdAto;
    @JoinColumn(name = "cd_natureza", referencedColumnName = "cd_natureza"  )
    @ManyToOne(cascade=CascadeType.ALL)
    private TbNatureza cdNatureza;
}
TbAto
@Entity
@Table(name = "tb_ato", catalog = "db_dnaso", schema = "db_notas")
@NamedQueries({@NamedQuery(name = "TbAto.findAll", query = "SELECT t FROM TbAto t"), @NamedQuery(name = "TbAto.findByCdAto", query = "SELECT t FROM TbAto t WHERE t.cdAto = :cdAto"), @NamedQuery(name = "TbAto.findByNmAto", query = "SELECT t FROM TbAto t WHERE t.nmAto = :nmAto"), @NamedQuery(name = "TbAto.findByNmTabelaCusta", query = "SELECT t FROM TbAto t WHERE t.nmTabelaCusta = :nmTabelaCusta"), @NamedQuery(name = "TbAto.findByNmDivisor", query = "SELECT t FROM TbAto t WHERE t.nmDivisor = :nmDivisor")})
public class TbAto implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "cd_ato", nullable = false)
    private Integer cdAto;
    @Basic(optional = false)
    @Column(name = "nm_ato", nullable = false, length = 250)
    private String nmAto;
    @Column(name = "nm_tabela_custa", length = 250)
    private String nmTabelaCusta;
    @Column(name = "nm_divisor", length = 250)
    private String nmDivisor;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "tbAto")
    private Collection<TbAtoSelo> tbAtoSeloCollection;
    @OneToMany(mappedBy = "cdAto")
    private Collection<TbAtoIndicador> tbAtoIndicadorCollection;
    @OneToMany(mappedBy = "cdAto")
    private Collection<TbAtoDocumento> tbAtoDocumentoCollection;
    @OneToMany(mappedBy = "cdAto")
    private Collection<TbAtoNatureza> tbAtoNaturezaCollection;
}
TbNatureza
@Entity
@Table(name = "tb_natureza", schema="db_notas")
@SequenceGenerator(sequenceName="tb_natureza_cd_natureza_seq",allocationSize=1, initialValue=0, name = "tb_natureza_cd_natureza_seq")
@NamedQueries({@NamedQuery(name = "TbNatureza.findByNrDiasPrevisto", query = "SELECT t FROM TbNatureza t WHERE t.nrDiasPrevisto = :nrDiasPrevisto")})
public class TbNatureza implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY, generator="tb_natureza_cd_natureza_seq") 
    @Column(name = "cd_natureza", nullable = false)
    private Integer cdNatureza;
    @Column(name = "nm_natureza", nullable = false)
    private String nmNatureza;
    @Column(name = "ds_natureza")
    private String dsNatureza;
    @Column(name = "nr_dias_previsto")
    private Integer nrDiasPrevisto;
    @Column(name = "nm_tabela_custa")
    private String nmTabelaCusta;
    @Column(name = "nm_modelo_documento")
    private String nmModeloDocumento;
    @Column(name = "nm_divisor")
    private String nmDivisor;
    @Column(name = "ic_revoga_documento")
    private Boolean icRevogaDocumento;
    @Column(name = "ic_retifica_documento")
    private Boolean icRetificaDocumento;
    @Column(name = "ic_central_cep")
    private Boolean icCentralCep;
    @Column(name = "ic_central_cesdi")
    private Boolean icCentralCesdi;
    @Column(name = "ic_informa_doi")
    private Boolean icInformaDoi;
    @Column(name = "ds_tipo_transacao_doi")
    private String dsTipoTransacaoDoi;
    @Column(name = "cd_pendencia_caixa")
    private Integer cdPendenciaCaixa;
    @JoinTable(name = "tb_titulo_natureza", schema="db_notas", joinColumns = {@JoinColumn(name = "cd_natureza", referencedColumnName = "cd_natureza")}, inverseJoinColumns = {@JoinColumn(name = "cd_titulo", referencedColumnName = "cd_titulo")})
    @ManyToMany
    private Collection<TbTitulo> cdTituloCollection;
    @JoinTable(name = "tb_exigencia_natureza", schema="db_notas", joinColumns = {@JoinColumn(name = "cd_natureza", referencedColumnName = "cd_natureza")}, inverseJoinColumns = {@JoinColumn(name = "cd_exigencia", referencedColumnName = "cd_exigencia")})
    @ManyToMany
    private Collection<TbExigencia> cdExigenciaCollection;
    @OneToMany(mappedBy = "cdNatureza")
    private Collection<TbIndicadorDocumento> tbIndicadorDocumentoCollection;
    @OneToMany(mappedBy = "cdNatureza")
    private Collection<TbDocumento> tbDocumentoCollection;
    @OneToMany(mappedBy = "cdNatureza", cascade=CascadeType.ALL)
    private Collection<TbAtoNatureza> tbAtoNaturezaCollection;
}
o q acontece.. eu tenho o seguinte metodo:
public TbNatureza salvarEditarNatureza(TbNatureza tbNaturezaBean) throws Exception {
        TbNatureza novaNatureza = new TbNatureza();

        if(tbNaturezaBean.getCdNatureza() == null){
            propBean.copyProperties(novaNatureza, tbNaturezaBean);
        
            naturezaDAO.persist(novaNatureza);
        }else{          
            naturezaDAO.update(tbNaturezaBean);
            propBean.copyProperties(novaNatureza, tbNaturezaBean);
        }
        return novaNatureza;

    }

porem estou com o seguinte problema: se eu fizer o seguinte:

tbNaturezaBean.setTbAtoNaturezaCollection(AtoNaturezaList);

se por acaso nessa lista eu ADICIONAR um atoNatureza novo ele salva no banco direito. porem se eu REMOVER um ato ele nao remove do banco, alguem sabe como posso arrumar isso? pq senao eu tenho q remover o atoNatureza na mao e depois salvar o resto..

alguem pode me ajudar??

valeu

Criado 25 de setembro de 2009
Respostas 0
Participantes 1