Sinceramente o q está errado? JPA

Estou beirando o desespero… alguém poderia consertar meu código?

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Endereco
{
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_endereco", nullable = false)
	private Integer idEndereco;
	
	@Column(nullable = false)
	private String logradouro;

	@OneToOne
	@JoinColumn(name = "id_pessoa_fisica")
	private PessoaJuridica pessoaJuridica;
	
	@OneToOne
	@JoinColumn(name = "id_pessoa_juridica")
	private PessoaFisica pessoaFisica;
@Entity
@Table(name = "pessoa_juridica")
public class PessoaJuridica extends Endereco
{
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_pessoa_juridica", nullable = false)
	private Integer idPessoaJuridica;
	
	@Column(nullable = false)
	private String nome;
	
	private String cnpj;
@Entity
@Table(name = "pessoa_fisica")
public class PessoaFisica extends Endereco
{
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_pessoa_fisica", nullable = false)
	private Integer idPessoaFisica;
	
	@Column(nullable = false)
	private String nome;

No meu banco está as tabelas
–pessoa_fisica—
id_pessoa_fisica -> chave primária, auto-incremento
nome
id_endereco -> chave estrangeira

–pessoa_juridica–
id_pessoa_juridica -> chave primária, auto-incremento
nome
cnpj
id_endereco -> chave estrangeira

–endereco–
id_endereco -> chave primária, auto-incremento
logradouro

  • dá o erro
    [color=“red”]Unable to define/override @Id(s) on a subclass: modelo.PessoaFisica[/color]

Obs: coloquei só o que interessa nas classes e tabela, claro que tinha um monte de enche lingüiça, exemplo endereco, tem bairro, cidade, cep. por ai vai[/code]

olha só, PF e PJ SÂO UM endereço?! ou eles TÊM um endereço?!
Então ao invés de PJ e PF extends Endereço, vc vai ter um atributo em PF e PJ do tipo Endereco.

Algo assim:

	@OneToOne
	@JoinColumn(name = "id_endereco")
	private Endereco endereco;

Ai tira esse abstract e os attr PJ e PF de endereço e tira todos extends, vc não vai ter a principio nenhum extends

ps1: Seu erro não era esse, o erro é que vc tem @Id na classe pai e filha, mas seu modelo tem esta logicamente errado.
ps2: Não da para postar muita coisa que minha empresa limita (um absurdo) o post.

PF e PJ cada um tem um endereço;… são pessoas distintas…

Faço a persistencia assim?

[code]
private EntityManagerFactory factory;

private EntityManager manager;

            factory = Persistence.createEntityManagerFactory("banco");
	manager = factory.createEntityManager();
	
	EntityTransaction tx = manager.getTransaction();
	tx.begin();
	try 
	{
		manager.persist(endereco);
		manager.persist(pessoaFisica);
		manager.flush();
		manager.clear();
		tx.commit();
	
	}
	catch (RuntimeException e) 
	{ 
		tx.rollback();
		manager.close();
		factory.close();
		
	}
	manager.close();
	factory.close();[/code]

obs: endereco e pessoaFisica são objetos de suas respectivas classes