Hibernate 3 não reconhece mapeamento @Column [resolvido]

Acabei e passar por este problema, porém resolvi. Fica a dica para quem passar por algo semelhante.

Tenho um sistema rodando normalmente em OC4J (10.1.3.2), com JPA usando Toplink Essentials. Comecei a fazer uns testes para rodar em JBoss (4.2.2) com Hibernate (3.2.4).

Acontece que em entidades com chaves compostas onde eu uso a anotação @IdClass, ele não reconhece a configuração do nome na anotação @Column do atributo da entidade.

Entidade:

[code]package xpto;

import java.io.Serializable;
import javax.persistence.*;

@Entity
@Table(name = “ACESSORIO”)
@IdClass(AcessorioPK.class)
public class Acessorio implements Serializable {
@Id @Column(name=“CD_ACSRO”, nullable = false)
private Long codAcessorio;
@Id @Column(name=“CD_LAUDO”, nullable = false)
private String cdLaudo;
@Id @Column(name=“NUM_VERSAO”, nullable = false)
private Long numVersao;
@Column(name=“TIPO_ACESSORIO”)
private String tipo;

// gets e sets

}[/code]

Chave (PK):

[code]package xpto;

import java.io.Serializable;
import javax.persistence.*;

public class AcessorioPK implements Serializable {
public Long codAcessorio;
public String codLaudo;
public Long numVersao;

public boolean equals(Object other) {
    //...
}

public int hashCode() {
    //...
}

}[/code]

A solução foi colocar as anotações @Id e @Column também na classe que mapeia a primary key (PK).

Solução:

[code]package xpto;

import java.io.Serializable;
import javax.persistence.*;

public class AcessorioPK implements Serializable {
@Id @Column(name=“CD_ACSRO”, nullable = false)
private Long cdAcessorio;
@Id @Column(name=“CD_LAUDO”, nullable = false)
private String cdLaudo;
@Id @Column(name=“NUM_VERSAO”, nullable = false)
private Long numVersao;

public boolean equals(Object other) {
    //...
}

public int hashCode() {
    //...
}

}[/code]

Mais links para referência:
http://opensource.atlassian.com/projects/hibernate/browse/EJB-286
http://lists.jboss.org/pipermail/hibernate-issues/2007-May/005107.html