(PROBLEMA) @Inheritance(strategy = InheritanceType.JOINED)

Bom Dia,

Estou com o seguinte problema ao usar o InheritanceType.JOINED,
Possuo classe Pessoa/Cliente/Fornecedor.
O Pessoa é minha classe PAI, e cliente/fornecer herdam PESSOA.
Ao efetuar dessa forma o jpa me gerou as tabelas : PESSOA/CLIENTE E FORNECEDOR, cliente e fornecedor tendo o mesmo ID de pessoa, porém em pessoa é criado um campo DTYPE (descriminatortype) onde indica se aquela “PESSOA” é fornecedor ou cliente.
Onde chega meu problema, vai existir casos que a mesma “PESSOA” poderá ser tanto “CLIENTE” como “FORNECEDOR” logo precisariam possuir o mesmo ID de pessoa nas duas tabelas, porém quando tento fazer esse processo, de fazer um novo “FORNECEDOR” por exemplo ser igual a uma “PESSOA” que já é cliente, não me permite. Dizendo que é impossível efetuar o (cast) de Cliente para Fornecedor.

Existe alguma possibilidade usando InheritanceType.JOINED de duas tabelas “filhas” usarem o mesmo código “Pai”?

Possuo as seguintes classes :

@XmlRootElement
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@Table(name="Pessoa")
public abstract class Pessoa implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private Long id;

    @Column(name = "descricao", length=100, nullable = false)
    private String descricao;

}


@Entity
@XmlRootElement
@PrimaryKeyJoinColumn(name="id", referencedColumnName = "id")
@Table(name="Cliente")

public class Cliente extends Pessoa implements Serializable {    
    @Basic()
    @Column(name = "limiteCompra", nullable = true)
    private Double limiteCompra;
}

@Entity
@XmlRootElement
@PrimaryKeyJoinColumn(name="id", referencedColumnName = "id")
@Table(name="Fornecedor")
public class Fornecedor extends Pessoa implements Serializable {

    @Basic
    @Temporal(javax.persistence.TemporalType.DATE)
    @Column(name = "ultimaCompra", nullable = true)
    private Date ultimaCompra;
}

Obrigado.

Alguem poderia me ajudar?

up.