Boas galera…
O problema em questão é o seguinte, tenho um relacionamento n:n com atributos que é construído a través de outro relacionamento n:n com atributos.
Primeiramente irei exibir o erro que está acontecendo:
Foreign key (FKDBDA2491EBAA54F4:tb_usuario_curso_disciplina [periodo])) must have same number of columns as the referenced primary key (tb_curso_disciplina [id_tb_curso,id_tb_disciplina])
Irei mostrar o trecho do diagrama de relacionamentos do banco de dados a que os mapeamentos a seguir se referem (cliquem na miniatura que ela mostrará a imagem em tamanho ampliado):

Agora irei mostrar o mapeamento que este erro se refere:
<hibernate-mapping>
<class name="uai.modelo.UsuarioCursoDisciplina" table="tb_usuario_curso_disciplina">
<composite-id name="compositeID"
class="uai.modelo.UsuarioCursoDisciplinaId">
<key-many-to-one name="usuario"
column="id_tb_usuario"
class="uai.modelo.Usuario"/>
<key-many-to-one name="cursoDisciplina"
column="periodo"
class="uai.modelo.Curso_Disciplina"/>
<key-many-to-one name="disciplina"
column="id_tb_disciplina"
class="uai.modelo.Disciplina"/>
<key-many-to-one name="curso"
column="id_tb_curso"
class="uai.modelo.Curso"/>
</composite-id>
<property name="situacao" />
</class>
</hibernate-mapping>
Agora irei mostrar a classe pojo deste mapeamento, a referencial do banco e a da composite id:
public class UsuarioCursoDisciplinaId {
private Usuario usuario;
private Curso_Disciplina cursoDisciplina;
private Curso curso;
private Disciplina disciplina;
//...gets e sets omitidos
}
public class UsuarioCursoDisciplina {
private String situacao;
private UsuarioCursoDisciplinaId CompositeID;
//...gets e sets omitidos
}
Irei postar aqui também o mapeamento da tabela do relacionamento n:n em que esta se relaciona (que está funcionando perfeitamente):
<hibernate-mapping>
<class name="uai.modelo.Curso_Disciplina" table="tb_curso_disciplina">
<composite-id name="compositeID"
class="uai.modelo.Curso_Disciplina_ID">
<key-many-to-one name="curso"
column="id_tb_curso"
class="uai.modelo.Curso"/>
<key-many-to-one name="disciplina"
column="id_tb_disciplina"
class="uai.modelo.Disciplina"/>
</composite-id>
<property name="periodo" />
<property name="carga_horaria" />
<property name="ementa" />
</class>
</hibernate-mapping>
Vale eu atentar para o fato de que eu já havia tentado referenciar o mapeamento das outras chaves primárias com a própria classe referida (Curso_Disciplina) e havia dado o mesmo erro.
Espero alguma luz 