Mapeamento Chave Composta

Caros Colegas.

Estou com o seguinte problema:

Tenho as segiuntes classes:

public class Grupo implements BaseEntity {

@EmbeddedId
private GrupoPK grupoPk;

@Id
@Column(name="gru_codigo")
private Integer codigo;

@Column(name="gru_nome")
private String nome;

@ManyToOne
@JoinColumn(name="fk_natureza_despesa")
private NaturezaDespesa naturezaDepesa;

============================================

@Embeddable
public class GrupoPK implements Serializable {

private static final long serialVersionUID = 1L;

private Integer codigo;

private NaturezaDespesa naturezaDespesa;

=============================================

public class SubGrupo implements BaseEntity {

@EmbeddedId
private SubGrupoPK subGrupoPk;

@Id
@Column(name="sub_codigo")
private Integer codigo;

@Column(name="sub_nome")
private String nome;

@ManyToOne
@JoinColumn(name="fk_subitem")
private Grupo grupo;

===============================================

@Embeddable
public class SubGrupoPK implements Serializable {

private static final long serialVersionUID = 1L;

private Integer codigo;

private Grupo grupo;

===============================================

Quando tento executar, me aparece a seguinte mensagem:

A Foreign key refering br.gadin.adm.entity.Grupo from br.gadin.adm.entity.SubGrupo has the wrong number of column. should be 3

Alguém sabe o que está errado?

da uma olhada

http://www.guj.com.br/java/235340-mapeamento-duas-uk-na-mesma-tabela-hibernate-resolvido

Acho que ficou meio confuso isso aki

@EmbeddedId
private GrupoPK grupoPk;

@Id
@Column(name="gru_codigo")
private Integer codigo; 

Pois se você está usando uma chave composta,
não tem lógica criar este campo id.

Verifique isso que está errado.