Olá
Estou com dificuldades de mapear os seguinte banco de dados
Tabela usr_usuario
PK - composta | cod_usuario
. . . . . . . . . . . . | tipo_usuario
| liferayId
Tabela usr_representante
PK, FK | cod_representante
| restante dos campos
Tabela usr_diretor
PK, FK | cod_diretor
| restante dos campos
Descrição do Cenario:
Usuario é superclasse de Representante e Diretor
codRepresentante e codDiretor são FK do codUsuario.
Como fiz o mapeamento:
Usuario.java
@Entity
@Table(name="usr_usuario")
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="tipo",discriminatorType=DiscriminatorType.INTEGER)
public class Usuario {
@Id
private UsuarioPK id = new UsuarioPK();
private Long liferayId;
UsuarioPK.java
@Embeddable
public class UsuarioPK implements Serializable {
private Long codUsuario;
private Integer tipo;
Representante.java
@Entity
@Table(name="rep_representante")
@DiscriminatorValue("1")
public class Representante extends Usuario{
private Long codRepresentante;
private String nome;
...
OBS.: mapeamento de Diretor é semelhante ao de Representante
No Entanto, se eu gero o Banco de Dados a partir desse mapeamento.
as tabelas Representante e diretor não saem como eu gostaria
sai assim (como campos cod_usuario, tipo que são pra conter nessas tabelas):
tab. rep_representate (como está sendo gerada)
PK|cod_Usuario
. . |Tipo
cod_representante
demais campos
e gostaria como descrevi logo no inicio.
o que estou faltando fazer e nao estou conseguindo:
- Mapear codRepresentante como FK de usr_usuario (ja tentei usar @JoinColumn mas não funcionou)
- e o campo tipo ficar contido apenas na tabela usr_usuario (estou usando a estrategia Joined não sei pq ele está aparencendo nas tabelas filhas, provalvemente pq ele é uma chave composta, como mapear para que ele não apareça nas classes filhas? )
Att. Dirceu