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