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

0 respostas
danieldestro

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:

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
}

Chave (PK):

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() {
        //...
    }
}

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

Solução:

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() {
        //...
    }
}

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

Criado 29 de maio de 2008
Respostas 0
Participantes 1