Galera estou Problemas com Annotetion @OneToOne ao chamar sessions.saveOrUpdate(pessoa);
faz uma persistencia em varias tabelas Endereco, CadastroPessoa, ImpostosReter o meu problema é que quando vou alterar chamar o metodo sessions.saveOrUpdate(pessoa); novamente ele duplica a linha no banco de dados para essas tabelas Endereco, CadastroPessoa, ImpostosReter
Preciso resolver e compreender esse problema favorzaoo ajudem -me!
Codigo da Tabela PessoaF abaixo tem relacionamento com as outras tabelas Endereco, CadastroPessoa, ImpostosReter
sessions.saveOrUpdate(pessoa);
package br.com.locadeveloper.model;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.Transient;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
@Entity
@Table(name="PESSOAF")
public class PessoaF implements Serializable{
public PessoaF(){
endereco = new Endereco();
cadastroPessoa = new CadastroPessoa();
impostosReter = new ImpostosReter();
}
private static final long serialVersionUID = 1L;
/** Identificador único pessoa*/
private Long mbId;
private String mbTipoPessoa;
private String mbCodReduzido;
private String mbCodAlternativo;
private String mbNomeCompleto;
private Date mbDataNasc;
private String mbSexo;
private String mbRg;
private String mbCpf;
private Endereco endereco;
private CadastroPessoa cadastroPessoa;
private String mbPesqCodReduzido;
private String mbPesqNome;
private String mbPesqCPF;
private String mbPesqRG;
private SimpleDateFormat mascData;
private Date dataAtual;
private ImpostosReter impostosReter;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="ID")
public Long getMbId() {
return mbId;
}
public void setMbId(Long mbId) {
this.mbId = mbId;
}
@Column(name="TIPOPESSOA", nullable=false, length=11)
public String getMbTipoPessoa() {
return mbTipoPessoa;
}
public void setMbTipoPessoa(String mbTipoPessoa) {
this.mbTipoPessoa = mbTipoPessoa;
}
@Column(name="CODREDUZIDO", nullable=false, length=11)
public String getMbCodReduzido() {
return mbCodReduzido;
}
public void setMbCodReduzido(String mbCodReduzido) {
this.mbCodReduzido = mbCodReduzido;
}
@Column(name="CODALTERNATIVO", nullable=true, length=11)
public String getMbCodAlternativo() {
return mbCodAlternativo;
}
public void setMbCodAlternativo(String mbCodAlternativo) {
this.mbCodAlternativo = mbCodAlternativo;
}
@Column(name="NOMECOMPLETO", nullable=false, length=200)
public String getMbNomeCompleto() {
return mbNomeCompleto;
}
public void setMbNomeCompleto(String mbNomeCompleto) {
this.mbNomeCompleto = mbNomeCompleto;
}
@Column(name="DATANASC", nullable=false, length=10)
@Temporal(javax.persistence.TemporalType.DATE)
public Date getMbDataNasc() {
return mbDataNasc;
}
public void setMbDataNasc(Date mbDataNasc) {
this.mbDataNasc = mbDataNasc;
}
@Column(name="SEXO", nullable=false, length=1)
public String getMbSexo() {
return mbSexo;
}
public void setMbSexo(String mbSexo) {
this.mbSexo = mbSexo;
}
@Column(name="RG", nullable=false, length=20)
public String getMbRg() {
return mbRg;
}
public void setMbRg(String mbRg) {
this.mbRg = mbRg;
}
@Column(name="CPF", nullable=false, length=20)
public String getMbCpf() {
return mbCpf;
}
public void setMbCpf(String mbCpf) {
this.mbCpf = mbCpf;
}
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
public CadastroPessoa getCadastroPessoa() {
return cadastroPessoa;
}
public void setCadastroPessoa(CadastroPessoa cadastroPessoa) {
this.cadastroPessoa = cadastroPessoa;
}
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
public ImpostosReter getImpostosReter() {
return impostosReter;
}
public void setImpostosReter(ImpostosReter impostosReter) {
this.impostosReter = impostosReter;
}
@Transient
public String getMbPesqCodReduzido() {
return mbPesqCodReduzido;
}
public void setMbPesqCodReduzido(String mbPesqCodReduzido) {
this.mbPesqCodReduzido = mbPesqCodReduzido;
}
@Transient
public String getMbPesqNome() {
return mbPesqNome;
}
public void setMbPesqNome(String mbPesqNome) {
this.mbPesqNome = mbPesqNome;
}
@Transient
public String getMbPesqCPF() {
return mbPesqCPF;
}
public void setMbPesqCPF(String mbPesqCPF) {
this.mbPesqCPF = mbPesqCPF;
}
@Transient
public String getMbPesqRG() {
return mbPesqRG;
}
public void setMbPesqRG(String mbPesqRG) {
this.mbPesqRG = mbPesqRG;
}
@Transient
public SimpleDateFormat getMascData() {
mascData = new SimpleDateFormat("##/##/####");
return mascData;
}
public void setMascData(SimpleDateFormat mascData) {
this.mascData = mascData;
}
@Transient
public Date getDataAtual() {
dataAtual = new Date();
return dataAtual;
}
public void setDataAtual(Date dataAtual) {
this.dataAtual = dataAtual;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public boolean equals(PessoaF pessoa) {
return EqualsBuilder.reflectionEquals(this, pessoa);
}
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}