Bom dia !!
Estou com o seguinte problema : tenho uma classe usario que contem uma propriedade List quando eu salvo o usuario e ele funciona perfeitamente quando eu faço a exclusao tbm , porem quando eu tento fazer o update ele em não altera a tabela de usuario estabelecimento e sim adiciona mais estabelecimento… abaixo os fontes
@Entity
@Table(name="usuario")
@SequenceGenerator(name="id_usuario", sequenceName="id_usuario")
public class Usuario implements Serializable {
private static final long serialVersionUID = 5130837767268165855L;
private int id;
private String nome;
private String iniciais;
private int acesso;
private Collection<UsuarioEstabelecimento> estabelecimentos ;
private String fone;
private String celular;
private String fax;
private String email;
@Id
@Column (name="id")
@GeneratedValue (strategy=GenerationType.SEQUENCE , generator="id_usuario")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column (name="nome", updatable=true)
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Column (name="acesso", updatable=true)
public int getAcesso() {
return acesso;
}
public void setAcesso(int acesso) {
this.acesso = acesso;
}
@OneToMany(mappedBy="usuario", fetch = FetchType.EAGER)
@Cascade(CascadeType.ALL)
public Collection<UsuarioEstabelecimento> getEstabelecimentos() {
return estabelecimentos;
}
public void setEstabelecimentos(Collection<UsuarioEstabelecimento> estabelecimentos) {
this.estabelecimentos = estabelecimentos;
}
@Column (name="iniciais", updatable=true)
public String getIniciais() {
return iniciais;
}
public void setIniciais(String iniciais) {
this.iniciais = iniciais;
}
@Column (name="fone", updatable=true)
public String getFone() {
return fone;
}
public void setFone(String fone) {
this.fone = fone;
}
@Column (name="celular", updatable=true)
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
@Column (name="fax", updatable=true)
public String getFax() {
return fax;
}
public void setFax(String fax) {
this.fax = fax;
}
@Column (name="email", updatable=true)
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
@Entity
@Table(name="usuario_estabelecimento")
@SequenceGenerator(name="id_item_estab", sequenceName="id_item_estab")
public class UsuarioEstabelecimento implements Serializable {
private static final long serialVersionUID = 5130837767268165855L;
private int id;
private int idEstab;
private Usuario usuario = new Usuario();
private Estabelecimento estabelecimento = new Estabelecimento();
@Id
@Column (name="id")
@GeneratedValue (strategy=GenerationType.SEQUENCE , generator="id_item_estab")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="id_usuario",
insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name="id_estab",
insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
public Estabelecimento getEstabelecimento() {
return estabelecimento;
}
public void setEstabelecimento(Estabelecimento estabelecimento) {
this.estabelecimento = estabelecimento;
}
}
@Entity
@Table(name="estabelecimento" )
@SequenceGenerator(name="id_estab", sequenceName="id_estab")
public class Estabelecimento implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String descricao;
private String idDBS;
private String fone;
private String codFaturamento;
private String cnpj;
private String nomeFaturamento;
private String endereco;
private String cidade;
private String estado;
private String cep;
@Id
@Column (name="id")
@GeneratedValue (strategy=GenerationType.SEQUENCE , generator="id_estab")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column (name="descricao")
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
@Column (name="id_dbs")
public String getIdDBS() {
return idDBS;
}
public void setIdDBS(String idDBS) {
this.idDBS = idDBS;
}
@Column (name="fone")
public String getFone() {
return fone;
}
public void setFone(String fone) {
this.fone = fone;
}
@Column (name="cod_faturamento")
public String getCodFaturamento() {
return codFaturamento;
}
public void setCodFaturamento(String codFaturamento) {
this.codFaturamento = codFaturamento;
}
@Column (name="cnpj")
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
@Column (name="nome_faturamento")
public String getNomeFaturamento() {
return nomeFaturamento;
}
public void setNomeFaturamento(String nomeFaturamento) {
this.nomeFaturamento = nomeFaturamento;
}
@Column (name="endereco")
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
@Column (name="cidade")
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
@Column (name="estado")
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
@Column (name="cep")
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
}
// --------------
public class UsuarioDao {
public void salvar(Usuario u){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
// Salva Usuário
session.save(u);
// Flush, Commit da transação
// close da sessão
session.getTransaction().commit();
}
public void alterar(Usuario u){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
// Salva Usuário
session.update(u);
// Flush, Commit da transação
// close da sessão
session.getTransaction().commit();
}
public List<Usuario> consultaItemUsuarioList(){
//System.out.println("aqui");
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
// Seleciona-se os dados via HQL (hibernate query language)
Query selectItemUsuario = session.createQuery("from Usuario");
List<Usuario> usuarios = selectItemUsuario.list();
session.getTransaction().commit();
return usuarios;
}
}
Eu tenho que apagar os estabelecimentos e inserir de novo ?
