Bom dia !
Pessoal,
estou estudando Jpa com Hibernate.
estou tendo dificuldade para passar uma chave estrangeira
tenho duas tabela uma Pessoa e outra Funcionário.
está salvando os dados tudo certo, porem a chave estrangeira pessoa_id que está dentro da tabela Funcionário que deveria receber o Id da Tabela pessoa, esta sendo carregada com o valor null.
se alguém souber me dizer o que estou fazendo de errado ficarei grato, segue meu código abaixo dos dois objeto Pessoa e Funcionário.
//Tabela Pessoa.
package br.com.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
@Entity
@Table(name = "pessoa")
public class Pessoa implements Serializable {
private static final long serialVersionUID = 1L;
Long id;
private String nome;
private String endereco;
private String numero;
private String complemento;
private String bairro;
private String cidade;
private String estado;
private String cep;
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@NotEmpty
@Size(max = 100)
@Column(length = 100, nullable = false)
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@NotEmpty
@Size(max = 100)
@Column(length = 100, nullable = false)
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
@NotEmpty
@Size(max = 6)
@Column(length = 6, nullable = false)
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
//@NotEmpty
@Size(max = 50)
@Column(length = 50, nullable = false)
public String getComplemento() {
return complemento;
}
public void setComplemento(String complemento) {
this.complemento = complemento;
}
@NotEmpty
@Size(max = 30)
@Column(length = 30, nullable = false)
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
@NotEmpty
@Size(max = 30)
@Column(length = 30, nullable = false)
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
@NotEmpty
@Size(max = 2)
@Column(length = 2, nullable = false)
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
@NotEmpty
@Size(max = 9)
@Column(length = 9, nullable = false)
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Pessoa other = (Pessoa) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}
//Tabela Funcionário.
package br.com.model;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
import br.com.amarildo.util.DecimalPositivo;
@Entity
@Table(name = "funcionario")
public class Funcionario implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private Pessoa pessoa;
private String cpf;
private String cargo;
private BigDecimal salario;
private TipoSexo sexo;
private Date dataAdmissao;
private Date dataDemissao;
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@OneToOne
@JoinColumn(name="pessoa_id")
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
@NotEmpty
@Size(max = 14)
@Column(length = 14, nullable = false)
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
@NotEmpty
@Size(max = 80)
@Column(length = 80, nullable = false)
public String getCargo() {
return cargo;
}
public void setCargo(String cargo) {
this.cargo = cargo;
}
//@NotNull
//@DecimalMin("0")
@DecimalPositivo
@Column(precision = 10, scale = 2, nullable = false)
public BigDecimal getSalario() {
return salario;
}
public void setSalario(BigDecimal salario) {
this.salario = salario;
}
@NotNull
@Enumerated(EnumType.STRING)
@Column(nullable = false)
public TipoSexo getSexo() {
return sexo;
}
public void setSexo(TipoSexo sexo) {
this.sexo = sexo;
}
@NotNull
@Temporal(TemporalType.DATE)
@Column(name = "data_admissao", nullable = false)
public Date getDataAdmissao() {
return dataAdmissao;
}
public void setDataAdmissao(Date dataAdmissao) {
this.dataAdmissao = dataAdmissao;
}
@Temporal(TemporalType.DATE)
@Column(name = "data_Demissao", nullable = true)
public Date getDataDemissao() {
return dataDemissao;
}
public void setDataDemissao(Date dataDemissao) {
this.dataDemissao = dataDemissao;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Funcionario other = (Funcionario) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}