Bom dia,
estou com o seguinte problema:
Tenho uma tabela chamada de Funcionário que tem por uma chave composta formada por pessoaJuridica e pessoaFisica, porém quando inicio o projeto, é apresentado o seguinte erro:
org.hibernate.MappingException: Unable to find column with logical name: id in org.hibernate.mapping.Table(funcionarios) and its related supertables and secondary tables
O código fonte de cada uma destas classes é o seguinte:
@Entity
@Table(name = "funcionarios")
public class Funcionario implements Serializable {
@EmbeddedId
private IFuncionarioPK id = new IFuncionarioPK();
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "pessoaJuridica", referencedColumnName = "pessoa")
private PessoaJuridica pessoaJuridica;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "pessoaFisica", referencedColumnName = "pessoa")
private PessoaFisica pessoaFisica;
@Column(nullable=false)
private String registro;
@Column(nullable=false)
private Integer dataBase;
@Column(nullable=false)
private Double salario;
@Temporal(javax.persistence.TemporalType.DATE)
@Column(nullable=true)
private Date dataDaOpcaoFGTS;
@Column(nullable=false)
private String contaFGTS;
@Column(nullable=false)
private Boolean contribuicaoSindical;
@Column(nullable=true)
private Double ajudaDeCusto;
@Column(nullable=true)
private Integer percentagemDeAdiantamento;
@Temporal(javax.persistence.TemporalType.DATE)
@Column(nullable=false)
private Date dataDeAdmissao;
@Temporal(javax.persistence.TemporalType.DATE)
@Column(nullable=true)
private Date dataDeTransferencia;
@Temporal(javax.persistence.TemporalType.DATE)
@Column(nullable=true)
private Date dataDoDesligamento;
@Temporal(javax.persistence.TemporalType.DATE)
@Column(nullable=true)
private Date dataDePagamentoDaRecisao;
@Column(nullable=true)
private Boolean temAvisoPrevio;
@Temporal(javax.persistence.TemporalType.DATE)
@Column(nullable=true)
private Date dataDoAvisoPrevio;
@Column(nullable=true)
private Integer numeroDeDiasDeAvisoPrevio;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "carteiraDeTrabalho", referencedColumnName = "id")
private CarteiraDeTrabalho carteiraDeTrabalho;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "funcao", referencedColumnName = "id")
private Funcao funcao;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "situacaoDeFuncionario", referencedColumnName = "id")
private SituacaoDeFuncionario situacaoDeFuncionario;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "situacaoDeFGTS", referencedColumnName = "id")
private SituacaoDeFGTS situacaoDeFGTS;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "tipoDeAdmissao", referencedColumnName = "id", nullable=false)
private TipoDeAdmissao tipoDeAdmissao;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "motivoDeAdmissao", referencedColumnName = "id", nullable=false)
private MotivoDeAdmissao motivoDeAdmissao;
//geter, seters, equals e hashcode
}
@Entity
@Table(name = "pessoasjuridicas")
@PrimaryKeyJoinColumn(name = "pessoa")
public class PessoaJuridica extends AbstractPessoa {
@Column(nullable = false)
private String nomeFantasia;
@Column(nullable = false)
private String cnpj;
@OneToMany(mappedBy = "pessoaJuridica")
private Set<Funcionario> funcionarios;
//geter, seters, equals e hashcode
}
@Entity
@Table(name = "pessoasfisicas")
@PrimaryKeyJoinColumn(name = "pessoa")
public class PessoaFisica extends AbstractPessoa {
private String sexo;
private String estadoCivil;
private String tipoSanguineo;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "deficiencia", referencedColumnName = "id")
private Deficiencia deficiencia;
private String cpf;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "naturalidade", referencedColumnName = "id")
private Cidade naturalidade;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "certificadoDeReservista", referencedColumnName = "id")
private CertificadoDeReservista certificadoDeReservista;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "tituloDeEleitor", referencedColumnName = "id")
private TituloDeEleitor tituloDeEleitor;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "carteiraDeIdentidade", referencedColumnName = "id")
private CarteiraDeIdentidade carteiraDeIdentidade;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "carteiraDeMotorista", referencedColumnName = "id")
private CarteiraDeMotorista carteiraDeMotorista;
//geter, seters, equals e hashcode
}
Toda ajuda é bem vinda.
Desde já agradeço a ajuda de todos.