Erro em relacionamento N:N com atributos (Hibernate)

1 resposta
WebX

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 :wink:

1 Resposta

WebX

Galera, um pequeno UP…quase 30 visualizações e nada :?

Criado 3 de junho de 2008
Ultima resposta 4 de jun. de 2008
Respostas 1
Participantes 1