Esta é minha classe:
[code]package br.com.caioaraujo.sige.model.mapping;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.Type;
import br.com.caioaraujo.sige.control.impl.utils.IAtivo;
@Entity
public class Membro implements IAtivo{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer idMembro;
@Lob
private byte[] foto;
@Column
private Boolean ativo;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="idPessoaFisica")
private PessoaFisica dadosPessoa;
@Column(length=50)
private String nomePai;
@Column(length=50)
private String nomeMae;
@OneToOne
private Cidade cidadeNascimento;
@Temporal(TemporalType.DATE)
private Date dataCasamento;
@Column
private String conjuge;
@Column(length=2)
private Integer qtdeFilhos;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="idMembroHistorico")
private MembroHistorico membresia;
public boolean isAtivo() {
return ativo;
}
public Integer getIdMembro() {
return idMembro;
}
public byte[] getFoto() {
return foto;
}
public PessoaFisica getDadosPessoa() {
return dadosPessoa;
}
public String getNomePai() {
return nomePai;
}
public String getNomeMae() {
return nomeMae;
}
public Cidade getCidadeNascimento() {
return cidadeNascimento;
}
public Date getDataCasamento() {
return dataCasamento;
}
public String getConjuge() {
return conjuge;
}
public Integer getQtdeFilhos() {
return qtdeFilhos;
}
public MembroHistorico getMembresia() {
return membresia;
}
public void setIdMembro(Integer idMembro) {
this.idMembro = idMembro;
}
public void setFoto(byte[] foto) {
this.foto = foto;
}
public void setAtivo(boolean ativo) {
this.ativo = ativo;
}
public void setDadosPessoa(PessoaFisica dadosPessoa) {
this.dadosPessoa = dadosPessoa;
}
public void setNomePai(String nomePai) {
this.nomePai = nomePai;
}
public void setNomeMae(String nomeMae) {
this.nomeMae = nomeMae;
}
public void setCidadeNascimento(Cidade cidadeNascimento) {
this.cidadeNascimento = cidadeNascimento;
}
public void setDataCasamento(Date dataCasamento) {
this.dataCasamento = dataCasamento;
}
public void setConjuge(String conjuge) {
this.conjuge = conjuge;
}
public void setQtdeFilhos(Integer qtdeFilhos) {
this.qtdeFilhos = qtdeFilhos;
}
public void setMembresia(MembroHistorico membresia) {
this.membresia = membresia;
}
}
[/code]
Este é o meu dao
public void update(Membro membro)
{
sf = HibernateUtil.getSessionFactory();
s = sf.openSession();
try{
s.beginTransaction();
s.saveOrUpdate(membro);
s.getTransaction().commit();
}catch(Exception e){
// vsf
}
}
e este é o objeto a ser atualizado no banco
Porém ao invés de fazer update ele faz insert e da um erro por ter um campo unique
Hibernate:
insert
into
sige.PessoaFisicaLocal
(bairro, cep, cidade_idCidade, complemento, email, numero, rua)
values
(?, ?, ?, ?, ?, ?, ?)
Hibernate:
insert
into
sige.TelefonePessoa
(telefoneCelular, telefoneComercial, telefoneResidencial)
values
(?, ?, ?)
Hibernate:
insert
into
sige.PessoaFisica
(cpf, dataNascimento, idPessoaFisicaLocal, estadoCivil, nomeCompleto, rg, sexo, idPessoaTelefone)
values
(?, ?, ?, ?, ?, ?, ?, ?)
WARN - {2013-12-31 10:53:09,278} [AWT-EventQueue-0] org.hibernate.engine.jdbc.spi.SqlExceptionHelper(logExceptions:143) - SQL Error: 1062, SQLState: 23000
ERROR - {2013-12-31 10:53:09,279} [AWT-EventQueue-0] org.hibernate.engine.jdbc.spi.SqlExceptionHelper(logExceptions:144) - Duplicate entry '000.000.000-00' for key 'cpf'
ja tente saveOrUpdate(object), merge(object) e persist(object) e nenhuma da…
Ah, e em meu xml está configurado como update
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sige</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.default_schema">sige</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.query.substitutions">true 1, false 0</property>
<mapping class="br.com.caioaraujo.sige.model.mapping.Usuario"/>
<mapping class="br.com.caioaraujo.sige.model.mapping.UsuarioPerfilAcesso"/>
<mapping class="br.com.caioaraujo.sige.model.mapping.Estado"/>
<mapping class="br.com.caioaraujo.sige.model.mapping.Pais"/>
<mapping class="br.com.caioaraujo.sige.model.mapping.Cidade"/>
<mapping class="br.com.caioaraujo.sige.model.mapping.MembroDesligamento"/>
<mapping class="br.com.caioaraujo.sige.model.mapping.MembroHistorico"/>
<mapping class="br.com.caioaraujo.sige.model.mapping.TelefonePessoa"/>
<mapping class="br.com.caioaraujo.sige.model.mapping.PessoaFisicaLocal"/>
<mapping class="br.com.caioaraujo.sige.model.mapping.PessoaFisica"/>
<mapping class="br.com.caioaraujo.sige.model.mapping.Membro"/>
</session-factory>
</hibernate-configuration>