Lista,
Tenho a classe Pessoa que é a base para PessoaFisica e PessoaJuridica.
Funcionário extends PessoaFisica.
Então fiz o mapeamento no hibernate conforme abaixo.
Porém se tiro a opção autoincrement no mysql eu recebo a exception:
org.hibernate.HibernateException: The database returned no natively generated identity value
E se deixo, no mysql, a opção autoincrement habilitada recebo a exception:
java.sql.SQLException: Cannot add or update a child row: a foreign key constraint fails
Onde está o meu erro?
Tks,
Marques
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Pessoa implements Serializable {
private Integer idPessoa;
private String telefone;
private String email;
private Endereco endereco;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
@Id
@GeneratedValue
public Integer getIdPessoa() {
return idPessoa;
}
public void setIdPessoa(Integer idPessoa) {
this.idPessoa = idPessoa;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}
import java.util.Date;
import javax.persistence.Entity;
@Entity
public class PessoaFisica extends Pessoa {
private String celular;
private String nome;
private Date dataNasc;
private Integer sexo;
private Integer estadoCivil;
private Integer grauInstrucao;
private String nomeMae;
private String nomePai;
private String cidadeNasc;
private Integer estadoNasc;
private String nacionalidade;
private String ctps;
private String serieCtps;
private String cpf;
private String rg;
private String emissorRg;
private String certMilitar;
private String tituloEleitor;
private String zonaEleitoral;
private String secaoEleitoral;
private String cnh;
private String categoriaCnh;
private Date dataEmissaoCnh;
private String pis;
public String getCategoriaCnh() {
return categoriaCnh;
}
public void setCategoriaCnh(String categoriaCnh) {
this.categoriaCnh = categoriaCnh;
}
public String getCertMilitar() {
return certMilitar;
}
public void setCertMilitar(String certMilitar) {
this.certMilitar = certMilitar;
}
public String getCidadeNasc() {
return cidadeNasc;
}
public void setCidadeNasc(String cidadeNasc) {
this.cidadeNasc = cidadeNasc;
}
public String getCnh() {
return cnh;
}
public void setCnh(String cnh) {
this.cnh = cnh;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getCtps() {
return ctps;
}
public void setCtps(String ctps) {
this.ctps = ctps;
}
public Date getDataEmissaoCnh() {
return dataEmissaoCnh;
}
public void setDataEmissaoCnh(Date dataEmissaoCnh) {
this.dataEmissaoCnh = dataEmissaoCnh;
}
public String getEmissorRg() {
return emissorRg;
}
public void setEmissorRg(String emissorRg) {
this.emissorRg = emissorRg;
}
public Integer getEstadoCivil() {
return estadoCivil;
}
public void setEstadoCivil(Integer estadoCivil) {
this.estadoCivil = estadoCivil;
}
public Integer getEstadoNasc() {
return estadoNasc;
}
public void setEstadoNasc(Integer estadoNasc) {
this.estadoNasc = estadoNasc;
}
public Integer getGrauInstrucao() {
return grauInstrucao;
}
public void setGrauInstrucao(Integer grauInstrucao) {
this.grauInstrucao = grauInstrucao;
}
public String getNacionalidade() {
return nacionalidade;
}
public void setNacionalidade(String nacionalidade) {
this.nacionalidade = nacionalidade;
}
public String getNomeMae() {
return nomeMae;
}
public void setNomeMae(String nomeMae) {
this.nomeMae = nomeMae;
}
public String getNomePai() {
return nomePai;
}
public void setNomePai(String nomePai) {
this.nomePai = nomePai;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public String getSecaoEleitoral() {
return secaoEleitoral;
}
public void setSecaoEleitoral(String secaoEleitoral) {
this.secaoEleitoral = secaoEleitoral;
}
public String getSerieCtps() {
return serieCtps;
}
public void setSerieCtps(String serieCtps) {
this.serieCtps = serieCtps;
}
public String getTituloEleitor() {
return tituloEleitor;
}
public void setTituloEleitor(String tituloEleitor) {
this.tituloEleitor = tituloEleitor;
}
public String getZonaEleitoral() {
return zonaEleitoral;
}
public void setZonaEleitoral(String zonaEleitoral) {
this.zonaEleitoral = zonaEleitoral;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public Date getDataNasc() {
return dataNasc;
}
public void setDataNasc(Date dataNasc) {
this.dataNasc = dataNasc;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Integer getSexo() {
return sexo;
}
public void setSexo(Integer sexo) {
this.sexo = sexo;
}
public String getPis() {
return pis;
}
public void setPis(String pis) {
this.pis = pis;
}
}
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Entity;
@Entity
public class Funcionario extends PessoaFisica {
private String registroFunc;
private Date dataAdmissao;
private Date dataDemissao;
private Integer centroCusto;
private Integer funcao;
private Integer tipoPagto;
private Integer tipoContratacao;
private Integer turno;
private BigDecimal salario;
public Integer getCentroCusto() {
return centroCusto;
}
public void setCentroCusto(Integer centroCusto) {
this.centroCusto = centroCusto;
}
public Date getDataAdmissao() {
return dataAdmissao;
}
public void setDataAdmissao(Date dataAdmissao) {
this.dataAdmissao = dataAdmissao;
}
public Date getDataDemissao() {
return dataDemissao;
}
public void setDataDemissao(Date dataDemissao) {
this.dataDemissao = dataDemissao;
}
public Integer getFuncao() {
return funcao;
}
public void setFuncao(Integer funcao) {
this.funcao = funcao;
}
public String getRegistroFunc() {
return registroFunc;
}
public void setRegistroFunc(String registroFunc) {
this.registroFunc = registroFunc;
}
public BigDecimal getSalario() {
return salario;
}
public void setSalario(BigDecimal salario) {
this.salario = salario;
}
public Integer getTipoContratacao() {
return tipoContratacao;
}
public void setTipoContratacao(Integer tipoContratacao) {
this.tipoContratacao = tipoContratacao;
}
public Integer getTipoPagto() {
return tipoPagto;
}
public void setTipoPagto(Integer tipoPagto) {
this.tipoPagto = tipoPagto;
}
public Integer getTurno() {
return turno;
}
public void setTurno(Integer turno) {
this.turno = turno;
}
}