Mapeart tabela com duas chaves primarias [Resolvido]

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

Procure aqui por composite-id

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

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

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:

<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…

Muito Obrigado pelas vossas respostas.

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

:smiley:

Paulo

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