Hibernate esta com Pau com Embeddable? erro: Repeated column in mapping for entity

4 respostas
arthurminarini

pessoal estou mepeando uma tabela que tem 4 chaves primarias somente. esta dando o erro Repeated column in mapping for entity: br.com.projeto.pojo.FRelLan column: CODCOLIGADA (should be mapped with insert=“false” update=“false”) . Ja coloquei os updatable false e insertable false. mas não esta dando. continua pedindo pra fazer isso. Se fosse na classe funcionaria mas é dentro de um @Embeddable vejam

@Entity
@Table(name="FRELLAN")
@DataTransferObject
public class FRelLan implements Serializable, Cloneable{

    @EmbeddedId
    private ChaveCompostaFRelLan codFRelLan;

    @RemoteProperty
    public ChaveCompostaFRelLan getCodFRelLan() {
        return codFRelLan;
    }

    public void setCodFRelLan(ChaveCompostaFRelLan codFRelLan) {
        this.codFRelLan = codFRelLan;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final FRelLan other = (FRelLan) obj;
        if (this.codFRelLan != other.codFRelLan && (this.codFRelLan == null || !this.codFRelLan.equals(other.codFRelLan))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 41 * hash + (this.codFRelLan != null ? this.codFRelLan.hashCode() : 0);
        return hash;
    }
}
@Embeddable
@DataTransferObject
public class ChaveCompostaFRelLan implements Serializable, Cloneable{
    
    @ManyToOne    
    @JoinColumns({
        @JoinColumn(name="IDLAN"),
        @JoinColumn(name="CODCOLIGADA")//<<<<<<<<<<<<<<problema
    })
    @RemoteProperty
    private FLan codFLan;

    @ManyToOne
    @JoinColumns({
        @JoinColumn(name="IDLANREL",referencedColumnName="IDLAN",insertable=false,updatable=false),
        @JoinColumn(name="CODCOLIGADA",referencedColumnName="CODCOLIGADA",insertable=false,updatable=false)//<<<<<<<<<problema
    })
    @RemoteProperty
    private FLan idLanRel;

    @RemoteProperty
    @Column(name = "TIPOREL", columnDefinition = "INT", nullable=false)
    private Integer tipoRel;

    @RemoteProperty
    public FLan getCodFLan() {
        return codFLan;
    }

    public void setCodFLan(FLan codFLan) {
        this.codFLan = codFLan;
    }
    
    @RemoteProperty
    public Integer getTipoRel() {
        return tipoRel;
    }

    public void setTipoRel(Integer tipoRel) {
        this.tipoRel = tipoRel;
    }

    @RemoteProperty
    public FLan getIdLanRel() {
        return idLanRel;
    }

    public void setIdLanRel(FLan idLanRel) {
        this.idLanRel = idLanRel;
    }


}

pq dentro de uma chave composta não funciona este mapeamento

4 Respostas

arthurminarini

e ai pessoal é pau mesmo?

andrelsmoraes

Opa, beleza?
Não sei se você já resolveu, mas eu tive que utilizar ForeignKey com diferentes nomes.
Não sei se esta é a melhor e correta solução, mas ficaria assim:

@ManyToOne      
    @JoinColumns({  
        @JoinColumn(name="IDLAN"),  
        @JoinColumn(name="CODCOLIGADA",referencedColumnName="CODCOLIGADA",insertable=false,updatable=false)
    })
    @ForeignKey(name="CODCOLIGADA_codFlan")
    @RemoteProperty  
    private FLan codFLan;  
  
    @ManyToOne  
    @JoinColumns({  
        @JoinColumn(name="IDLANREL",referencedColumnName="IDLAN",insertable=false,updatable=false),  
        @JoinColumn(name="CODCOLIGADA",referencedColumnName="CODCOLIGADA",insertable=false,updatable=false)
    })  
    @ForeignKey(name="CODCOLIGADA_idLanRel")
    @RemoteProperty  
    private FLan idLanRel;
arthurminarini

seria o nome da foreignkey do banco correto? vou testar e te falo

arthurminarini

vlw cara mas não deu certo. continua o mesmo erro

Criado 31 de julho de 2009
Ultima resposta 3 de ago. de 2009
Respostas 4
Participantes 2