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;
}