Mapeart tabela com duas chaves primarias [Resolvido]

6 respostas
P

Viva,

Estou a tentar mapear uma tabela Sql através hibernate no Eclipse.

O meu problema passa-se quando tento construir o xpto.hbm.xml pois a minha tabela tem duas chaves primarias.

Alguem já fez isto ou sabe como pode ser feito?

Obrigado pela ajuda. :slight_smile:

Paulo

6 Respostas

Diego_Silveira

Procure aqui por composite-id

[URL]http://www.hibernate.org/hib_docs/reference/en/html/mapping.html[/URL]

P

Muito obrigado, é o que vou fazer…
:smiley:

Diego_Silveira

Neste documento que te passei, tópico 5.1.7 tem exemplos de tabelas com chave primária composta. Qualquer dúvida posta ai :wink:

Focao
<class name=br.model.Nenkey table=NENKEY>

<composite-id

name="comp_id"

class=br.model.NenkeyPk

>

<key-property

name="codCategory"

type="java.lang.Integer"

column=CODKSCATEGORY

/>
&lt;key-property
                     name="yearMonth"
		            type="java.lang.Integer"
		            column="YEAR_MONTH"
            /&gt;

    &lt;/composite-id&gt;

os 2 bean

private NenkeyPk comp_id;
	 
	/** full constructor */
	public Nenkey(NenkeyPk comp_id) {
        this.comp_id = comp_id;
    }

e a pk

não pode deixar de usar os metodos de hash e equal

/**
     * Metodo comparativo entre entidades do tipo {@link NenkeyPk}.
     * @param o Objeto qual deseja-se comparar.
     * @return &lt;code&gt;true&lt;/code&gt; quando o objeto em questao e uma instancia de {@link NenkeyPk} e seus
     *         atributos possuem o mesmo valor, &lt;code&gt;false&lt;/code&gt; caso contrario.
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(Object obj) {
        
        if (!(obj instanceof NenkeyPk)) return false;
        
        NenkeyPk categoryDayPk = (NenkeyPk) obj;
        
        return new EqualsBuilder().
                append(codCategory, categoryDayPk.codCategory).
                append(yearMonth, categoryDayPk.yearMonth).
                isEquals();
    }
    
    /**
     * Retorna o hashCode deste NenkeyPk.
     * 
     * @return Identificador unico para esta instancia.
     * 
     * @see java.lang.Object#hashCode()
     * @see org.apache.commons.lang.builder.HashCodeBuilder
     */
    public int hashCode() {
        return new HashCodeBuilder().
                append(codCategory).
                append(yearMonth).
                toHashCode();
    }

Mais elegante impossível

boa sorte…

P

Muito Obrigado pelas vossas respostas.

Amanhã vou terminar esse trabalho e vou dar-vos algumas noticias.

:smiley:

Paulo

P

Correu tudo pelo melhor mais uma vez obrigado pela vossa ajuda…
:smiley:

Criado 12 de novembro de 2008
Ultima resposta 13 de nov. de 2008
Respostas 6
Participantes 3