O que coloco na Entidade que fornece a FK, usando JPA

2 respostas
V

Galera tenho 3 classes, no banco de dados o id_endereco é chave estrangeira nas tabelas pessoa_fisica e pessoa_juridica

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Endereco
{
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_endereco", nullable = false)
	private Integer idEndereco;
	
	@Column(nullable = false)
	private String logradouro;
	
	private String bairro;
	
	private String cidade;
}
@Entity
@Table(name = "pessoa_juridica")
public class PessoaJuridica
{
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_pessoa_juridica", nullable = false)
	private Integer idPessoaJuridica;
	
	@Column(nullable = false)
	private String nome;
	
	private String cnpj;

	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "id_endereco")
	private Endereco endereco;
@Entity
@Table(name = "pessoa_fisica")
public class PessoaFisica
{
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_pessoa_fisica", nullable = false)
	private Integer idPessoaFisica;
	
	@Column(nullable = false)
	private String nome;
	
	@Column(name = "data_nasc")
	@Temporal(TemporalType.DATE)
	private Date dataNasc;
		
	private String naturalidade;
	
	@Column(name = "uf_nasc")
	private String ufNasc;
	
	private String cpf;
	
	private String rg;
	
	@Column(name = "orgao_emissor")
	private String orgaoEmissor;
	
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "id_endereco") 
	private Endereco endereco;
}

dá essa mensagem de erro

aused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on modelo.PessoaFisica.endereco references an unknown entity: modelo.Endereco

o que devo adicionar em endereco?? já que ela q é chave estrangeira de pessoa_fisica e pessoa_juridica

2 Respostas

J

Pra que essa anotação @Inheritance?

Você tem que mapear a entidade Endereco para sua respectiva tabela.

@Entity
@Table(name = "enderecos")
public class Endereco
{
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "id_endereco", nullable = false)
   private Integer idEndereco;
   
   @Column(nullable = false)
   private String logradouro;
   
   private String bairro;
   
   private String cidade;
}
V

po foi mal cara… tava funcionando legal, mas do nada parou… agora q reparei em um detalhe, na Classe Endereco tirei o @Entity não sei porque, era isso q tava dando erro.

Criado 30 de agosto de 2007
Ultima resposta 30 de ago. de 2007
Respostas 2
Participantes 2