Error ao inserir um registro chave composta. ( HIbernate )

bom dia galera, estou iniciando uma aplicação teste aqui na empresa pra começarmos a aplicar hibernate, porém está dando alguns problemas, vou postar a ideia aqui…

a ideia inicial é fazer uma agente onde uma agenda tem varios contatos e varios usuarios.
a navegabilidade é bidirecional entre agenda e usuario(Usuario tem apenas uma agenda), e unidirecional de contato pra agenda(agenda pra contato) ok…

error:

Exception in thread "main" org.hibernate.MappingException: Foreign key (FK9BEFBE0A10E6256:Contato [contato_id])) must have same number of columns as the referenced primary key (Agenda [usuario_id,contato_id])
	at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:90)
	at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:73)
	at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1263)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1170)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
	at br.inf.bios.util.HibernateUtil.getSession(HibernateUtil.java:17)
	at br.inf.bios.persistencia.TesteHibernate.main(TesteHibernate.java:24)

estou usando Xdoclet…os hbms de agenda e sua entida…

Agenda.hbm.xml

<hibernate-mapping package="br.inf.bios.entidade">
  <class name="Agenda">
  	<composite-id name="id" class="AgendaID" >
  		<key-property name="usuarioid" column="usuario_id" ></key-property>
  		<key-property name="contatoid" column="contato_id"></key-property>
  	</composite-id>
  	<property name="dtinclussao" column="dt_cadastramento" ></property>
  	
  	<set name="contato" cascade="save-update" lazy="true" >
  		<key column="contato_id" >
  		</key>
  		<one-to-many class="Contato"  />
  	</set>
	
	<set name="usuario" cascade="save-update" lazy="true" >
		<key column="usuario_id"  ></key>
		<one-to-many class="Usuario" />
	</set>

  </class>
</hibernate-mapping>

Agenda

package br.inf.bios.entidade;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;

import br.inf.bios.entidadeIF.AgendaIF;
import br.inf.bios.entidadeIF.ContatoIF;
import br.inf.bios.entidadeIF.UsuarioIF;

public class Agenda implements AgendaIF, Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Set<UsuarioIF> usuario;
	private Set<ContatoIF> contato;
	private Date dtinclussao;	

	public Set<ContatoIF> getContato() {
		// TODO Auto-generated method stub
		return this.contato;
	}

	public Date getDatainclusao() {
		// TODO Auto-generated method stub
		return this.dtinclussao;
	}

	public Set<UsuarioIF> getUsuario() {
		// TODO Auto-generated method stub
		return this.usuario;
	}

	public void setContato(ContatoIF contato) {
		// TODO Auto-generated method stub
		this.contato.add(contato);
	}

	public void setDatainclusao(Date dtinclusao) {
		// TODO Auto-generated method stub
		this.dtinclussao = dtinclusao;
	}

	public void setUsuario(UsuarioIF usuario) {
		// TODO Auto-generated method stub
		this.usuario.add(usuario);
	}
}

um mainzinho de teste

public static void main(String[] args) {
		
		Session session = HibernateUtil.getSession();

		Transaction trans = session.beginTransaction();

		TelefoneIF telefoneIF = new Telefone();
			telefoneIF.setDdd("062");
			telefoneIF.setFone("3251-6607");
			
		ContatoIF contatoIF = new Contato();
			contatoIF.setEmail("daniel@gmail.com");
			contatoIF.setNome("Daniel Souza");
			contatoIF.setTelefone(telefoneIF);
			
		UsuarioIF usuarioIF = new Usuario();
			usuarioIF.setId(new Integer(1));
			
		AgendaIF agendaIF = new Agenda();
			agendaIF.setContato(contatoIF);
			agendaIF.setUsuario(usuarioIF);

		session.save(agendaIF);
		trans.commit();
	}
}

seguinte no meu contexto o Objeto ja vai estar na sesson, eu so vou salver em agenda o contato pois o Usuario vai ter de estar logado pra poder inserir um contato…Se alguem puder me dar uma façar, desde já agradeço…

:smiley: