Mapeamento chave composta por objetos - JPA

Caros, estou com uma dúvida.

Tenho uma tabela legada chamada Pagamento. Nela existe um campo Codigo e um campo IsEmpresa. O campo Codigo contém uma String que pode ser mapeada para duas entidades diferentes: Empresa e Escritorio. Tudo depende apenas do campo IsEmpresa. Se o IsEmpresa for TRUE, a minha entidade a ser mapeada é a Empresa. Se o campo for FALSE, a entidade a ser mapeada é a Escritorio.

Como faço essa definição?

tentei criar uma classe para a chave composta:

@Embeddable
public class PagamentoPK implements Serializable  {

    @JoinColumn(name="Codigo")
    private Empresa oEmpresaCobrada;

    @Column(name="IsEmpresa", nullable=true)
    private int isEmpresa; //nesse caso o campo boolean está mapeado para um int...

Mas, como mapearia a minha Pagamento?

@Entity
@Table ( name = "Pagamento" )
public class Pagamento implements Serializable  {

    @EmbeddedId
    private PagamentoPK pagamentoPK;

Como ficariam as definições de propriedades, para minha classe PK?

Eu poderia criar duas classes distintas, uma que mapeasse sempre o campo IsEmpresa como TRUE - sempre usando uma entidade Empresa, e outra que mapeasse IsEmpresa como FALSE, usando uma entidade Escritorio? Nesse caso, como criar duas classes distintas definindo esse parâmetro para o meu mapeamento?