[Hibernate]@DiscriminatorColumn como parte de Chave Composta

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