JPA (HIBERNATE) - Mapear chave estrangeira (FK) composta!

Prezados,

hipoteticamente possuo uma Entidade EMPRESA (ID_NOME, ID_CNPJ, TELEFONE) e uma Entidade CARGO(CARGO_ID, NOME, REMUNERACAO) que possui um relacionamento ManyToOne com EMPRESA.

Sabendo que ID_NOME e ID_CNPJ são uma chave composta da entidade EMPRESA,
como faço para que a tabela CARGO possua em sua estrutura ID_NOME e ID_CNPJ como colunas?

Como é o mapeamento em JPA nesta situação?

Gostaria que a estrutura ficasse assim!
EMPRESA (ID_NOME, ID_CNPJ, TELEFONE)
CARGO(CARGO_ID, NOME, REMUNERACAO, NOME_EMPRESA, CNPJ_EMPRESA)

Desde já, agradeço a cooperação!

Teste assim na entidade cargo

@ManyToOne
	@JoinColumns({
			@JoinColumn(name = "NOME_EMPRESA", referencedColumnName = "NOME_EMPRESA", nullable = false, insertable = false, updatable = false),
			@JoinColumn(name = "CNPJ_EMPRESA", referencedColumnName = "CNPJ_EMPRESA", nullable = false, insertable = false, updatable = false),
			})
	private Empresa empresa;

Olá fdiaz2011! Obrigado por responder!

Eu fiz o que você falou, porém deu o seguinte erro:
[color=red]
Caused by: org.hibernate.AnnotationException: A Foreign key refering Empresa from Cargo has the wrong number of column. should be 2[/color]

Segue abaixo as classes:
Empresa

[code]public class Empresa {
@EmbeddedId
private EmpresaPK idEmpresa;

@Column(name = "TELEFONE", nullable = false)
private String telefone;

//Getters and Setters...

}[/code]

EmpresaPK

[code]
@Embeddable
public class EmpresaPK {
@Column(name = “ID_NOME”, nullable = false)
private String idNome;

@Column(name = "ID_CNPJ", nullable = false)
private String idCnpj;

//GETTERS AND SETTERS...

}[/code]

Cargo

[code]public class Cargo {
@Id
@GeneratedValue
@Column(name = “CARGO_ID”, nullable = false)
private BigDecimal idCargo;

@Column(name = "NOME", nullable = false)
private String nome;

@Column(name = "REMUNERACAO", nullable = true)
private BigDecimal remuneracao;


@ManyToOne  
@JoinColumns({  
        @JoinColumn(name = "NOME_EMPRESA", referencedColumnName = "ID_NOME", nullable = false, insertable = false, updatable = false),  
        @JoinColumn(name = "CNPJ_EMPRESA", referencedColumnName = "ID_CNPJ", nullable = false, insertable = false, updatable = false),  
        })  
private Empresa empresa; 

}[/code]

Cara, eu não tenho muita experiencia com chave composta, mas tenta o seguinte.

@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = “idNome”, column = @Column(name = “ID_NOME”, nullable = false)),
@AttributeOverride(name = “idCnpj”, column = @Column(name = “ID_CNPJ”, nullable = false)) })
private EmpresaPK idEmpresa;

Ih companheiro, não deu certo aqui não, mas creio que o caminho é usar o @AttributeOverrides . Tentando aqui.

Alguém sabe mapear uma chave estrangeira composta???