Chave composta: composite-id class must override equals

Oi pessoal, estou começando a utilizar o hibernate e preciso mapear uma tabela que possui algumas chaves compostas, no entanto, inclui no meu hbm.xml a seguinte referencia:

<composite-id> <key-property name="passa" column="PASSA" type="java.lang.String" length="40"/> <key-property name="horapartida" column="HORAPARTIDA" type="java.lang.String" length="5"/> <key-property name="empresa" column="EMPRESA" type="java.lang.String" length="40"/> <key-property name="linha" column="LINHA" type="java.lang.String" length="10"/> </composite-id>

No entanto, quando eu chamo o metodo buildSessionFactory() para carregar as configurações a seguinte exceção é lançada:
net.sf.hibernate.MappingException: composite-id class must override equals(): pojo.Linha

Gostaria de saber se alguem sabe o que pode estar acontecendo.
Andei pesquisando e a maioria das pessoas associa uma classe a uma chave composta, é realmente preciso fazer isso? Eu tenho que criar uma outra classe para representar a chave composta? e então fazer:

<composite-id name="id" class="Composta">> <key-property name="passa" column="PASSA" type="java.lang.String" length="40"/> <key-property name="horapartida" column="HORAPARTIDA" type="java.lang.String" length="5"/> <key-property name="empresa" column="EMPRESA" type="java.lang.String" length="40"/> <key-property name="linha" column="LINHA" type="java.lang.String" length="10"/> </composite-id>

Essa é a unica solução?

Na verdade vc não precisa da classe para fazer o composite-id… O seu primeiro exemplo funciona… Vc tem cereza que sobreescreveu o equals da classe representada pelo composite-id???

Olá, participei de uma post semelhante a esse nos foruns do JavaFree. Repetindo o que disse lá: se vc quer usar composite-id é extremamente recomendado criar uma classe que represente a sua pk composta por alguns motivos simples:
[list]1. Vc tem maior controle sobre o estado do objeto que representa a pk;
2. Vc pode, alias, deve, sobreescrever metodos equals e hashCode de maneira consistente;
3. Vc e principalmente o Hibernate não vão precisar tratar com o objeto completo apenas para realizar operações (relacionamentos e outras) com a pk.[/list]
valeuz…

Pessoal, realmente meu erro era super infantil, eu simplesmente não estava implementando os metodos hashcode e equals. Mais uma vez muito obrigado pessoal.
[]'s