Associação entre Objetos usando Hibernate

Tenho as seguintes tabelas em meu banco de dados:

Mascara (campos: IdMascara, Nome)

Lista (campos: IdLista, Nome)

Usuario (IdUsuario, Nome)

MascaraLista (campos: IdMascaraLista, IdMascara, IdLista)

UsuarioMascaraLista (IdUsuarioMascaraLista, IdUsuario, IdMascaraLista)

Mapeamos essas tabelas no hibernate. O objeto Mascara tem
um set de listas (many-to-many, através da tabela MascaraLista). O ojbeto Lista tem um
set de mascaras.(many-to-many, através da tabela MascaraLista)
O objeto Usuario tem um set de mascaraListas(many-to-many, através da tabela
UsuarioMascaraLista).
Temos também o objeto MascaraLista que tem um set de usuarios(many-to-many, através da
tabela UsuarioMascaraLista).
Quando rodo a aplicação dá o seguinte erro:
INFO: net.sf.hibernate.MappingException: Foreign key (UsuarioMascaraLista
[IdMascaraLista])) must have same number of columns as the reference primary key
(MascaraLista [IdMascara,IdLista])
Eu preciso que o objeto MascaraLista exista por causa de como o ator(usuario) interage
com o sistema.

O que o hibernate está fazendo nessa situação?
Como posso resolver esse problema?

Pelo que entendi a tabela MascaraLista possui uma PK composta por duas colunas, IdMascara e IdLista. Ou pelo menos foi isto que mapeou.

Caso seja nada disso, pode postar os mapeamentos?

Trabalho na mesma empresa que a Evelaine e estamos tentando resolver esse problema juntos.
Uso MySQL e, na minha tabela, não há nenhuma PK definida para esses dois campos. Apenas a PK para IdMascaraLista mesmo.

Os mapeamentos estão assim:

Mascara.hbm.xml:

[code]


        <many-to-many
              class="br.com.valoriza.sitemascara.persistencia.Lista"
              column="IdLista"
        />
    </set>[/code]

Lista.hbm.xml:

[code]


        <many-to-many
              class="br.com.valoriza.sitemascara.persistencia.Mascara"
              column="IdMascara"
        />
    </set>[/code]

Usuario.hbm.xml:

[code]


        <many-to-many
              class="br.com.valoriza.sitemascara.persistencia.MascaraLista"
              column="IdMascaraLista"
        />
    </set>[/code]

MascaraLista.hbm.xml:

[code]


        <many-to-many
              class="br.com.valoriza.sitemascara.persistencia.Usuario"
              column="IdUsuario"
        />
    </set>[/code]

E aí? O que nós fizemos de errado?

O mapeamento me parece correto caso as PKs estejam declaradas corretamente.

Pelo que o erro me diz entendi que a pk da classe MascaraLista não é o campo IdMascaraLista como esperado, mas sim uma pk-composta por IdMascara e IdLista.

MascaraLista.hbm.xml está com a pk declarada mais ou menos assim?

<id column="IdMascaraLista" name="id" type="java.lang.Integer"> <generator class="identity" /> </id>

A diferença aqui é:
Onde está

<generator class="identity" />

Nós temos

<generator class="native" />

Não altera nada não, altera?