Problema no mapeamento Hibernate

Pessoal vou ver se explico certinho dessa vez que ate agora nada me veio a mente

Eu tenho 5 classes,

Pessoa
Contato
Endereco
Usuario
Cliente

Pessoa é uma classe Pai
Usuario e Cliente herdam a classe Pessoa
Na classe pessoa eu tenho uma lista de Endereco e uma de Contato

Fiz o mapeamento e o que está acontecendo é o seguinte, o Hibernate cria uma tabela Usuario, uma Cliente, Uma endereco, Uma contato
e aqui vem meu problema, ele cria uma usuario_endereco e uma usuario_contato, cliente_contato e cliente_endereco

Dessa maneira os dados do Contato e do Endereco para Cliente e Usuario ficam na mesma tabela, na tabela usuario_contato fica a FK do contato e do Usuario
e para o cliente a mesma coisa.

Eu gostaria que ele criasse algo assim

Tabela: Cliente, Usuario, Contato_Usuario, Endereco_Usuario, Contato_Cliente, Endereco_Cliente

Alguem manja esse esquema??

Segue o mapeamento

@MappedSuperclass
public abstract class Pessoa implements Serializable
{
	@Id
	@GeneratedValue
	private Integer chave;
	
	@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
	private List<Contato> contatos = new ArrayList<Contato>();
	
	@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
	private List<Endereco> enderecos = new ArrayList<Endereco>();
}
@Entity
@Table(name="usuario")
public class Usuario extends Pessoa 
{
}
@Entity
@Table(name="cliente")
public class Cliente extends Pessoa 
{
}
@Entity
@Table(name="endereco")
public class Endereco implements Serializable
{
	@Id
	@GeneratedValue
	private Integer chave;
	
	@Column
	private String logradouro;
	
	@Column
	private String numero;
}
@Entity
public class Contato implements Serializable
{
	@Id
	@GeneratedValue
	private Integer chave;
	
	@Column
	private String nome;
}

Você pode colocar


@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
@MappedSuperclass  
public abstract class Pessoa implements Serializable  


Ele vai criar uma tabela para cada classe com os dados que pessoa tem, logo, vc vai perder a herança no banco, mas vai manter no sistema. Não sei
se é o caso.

Você vai perder a herança no banco, mas vai conseguir o que você quer, vale a pena testar.

Fiz isso, mas continuou do mesmo jeito
Mas alguma ideia?

Minto, não ficou do mesmo jeito não, agora ele está fazendo todas as operações salvar e atualizar certinho
coisa que não estava fazendo antes, pq quando eu atualizava ele criava outra linha para contato e endereco
Mas agora ele esta mantendo a mesma linha e tal

Mas ainda continua salvando todas as informações na mesma tabela

se quiser salvar em tabelas diferente, cada classe com sua tabela, vc tem q usar o @Inheritance(strategy=InheritanceType.JOINED)