Mapeamento M X N hibernate

Pessoal, segue o erro que estou obtendo.

Exception in thread “AWT-EventQueue-0” java.lang.RuntimeException: Can not instantiate DAO: class br.ufpb.coperve.persistencia.dao.postgre.ConcursoDAOHibernate
11:28:05,288 INFO HbmBinder:2375 - Mapping collection: br.ufpb.coperve.vo.PreInscricao.opcoes -> PreOpcao
at br.ufpb.coperve.persistencia.HibernatePostgreDAOFactory.instantiateDAO(HibernatePostgreDAOFactory.java:223)
at br.ufpb.coperve.persistencia.HibernatePostgreDAOFactory.getConcursoDAO(HibernatePostgreDAOFactory.java:95)
11:28:05,289 INFO HbmBinder:2375 - Mapping collection: br.ufpb.coperve.vo.Prova.diasProva -> DiaProva
at br.ufpb.coperve.visao.tables.ConcursoTable.montaTabela(ConcursoTable.java:48)
11:28:05,295 INFO HbmBinder:2375 - Mapping collection: br.ufpb.coperve.vo.DiaProva.disciplinas -> DisciplinaProva
at br.ufpb.coperve.visao.tables.ConcursoTable.(ConcursoTable.java:35)
at br.ufpb.coperve.visao.form.PrincipalForm.jMenuItem13ActionPerformed(PrincipalForm.java:1828)
11:28:05,295 INFO HbmBinder:2375 - Mapping collection: br.ufpb.coperve.vo.DisciplinaProva.questoes -> Questao
at br.ufpb.coperve.visao.form.PrincipalForm.access$000(PrincipalForm.java:84)
11:28:05,296 INFO HbmBinder:2375 - Mapping collection: br.ufpb.coperve.vo.LocalProva.salas -> Sala
at br.ufpb.coperve.visao.form.PrincipalForm$1.actionPerformed(PrincipalForm.java:256)
11:28:05,296 INFO HbmBinder:2375 - Mapping collection: br.ufpb.coperve.vo.LocalProvaConcurso.salas -> SalaConcurso
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: org.hibernate.MappingException: An association from the table categorias_cursos refers to an unmapped class: Curso
at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1252)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1170)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at br.ufpb.coperve.persistencia.HibernatePostgreDAOFactory.getCurrentSession(HibernatePostgreDAOFactory.java:231)
at br.ufpb.coperve.persistencia.HibernatePostgreDAOFactory.instantiateDAO(HibernatePostgreDAOFactory.java:220)
… 33 more

Pessoal segue os modelos e os mapeamentos.

package br.ufpb.coperve.vo;

import java.util.Set;

public class Curso {

private Integer   codigo;
private String    nome;
private String    nomeReduzido;
private String    codigoPrg;
private String    curriculoAtual;
private int       musica; // 0 - não ; 1 - sim
private byte turno;
private Polo polo;
private Campus	  campus;
private Set categorias;

private byte status;

public byte getStatus() {
    return status;
}

public void setStatus(byte status) {
    this.status = status;
}

public Integer getCodigo() {
    return codigo;
}

public void setCodigo(Integer codigo) {
    this.codigo = codigo;
}

public String getCodigoPrg() {
    return codigoPrg;
}

public void setCodigoPrg(String codigoPrg) {
    this.codigoPrg = codigoPrg;
}

public String getCurriculoAtual() {
    return curriculoAtual;
}

public void setCurriculoAtual(String curriculoAtual) {
    this.curriculoAtual = curriculoAtual;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getNomeReduzido() {
    return nomeReduzido;
}

public void setNomeReduzido(String nomeReduzido) {
    this.nomeReduzido = nomeReduzido;
}

public Campus getCampus() {
    return campus;
}

public void setCampus(Campus campus) {
    this.campus = campus;
}

public byte getTurno() {
    return turno;
}

public void setTurno(byte turno) {
    this.turno = turno;
}

public String toString(){
    return this.codigo.toString() + " - " +  this.nome ;
}

public boolean equals(Object objeto){
    try{
        return ((Curso) objeto).getCodigo().intValue() == this.codigo.intValue();
    }
    catch (Exception e){
        return false;
    }
}

public int getMusica() {
    return musica;
}

public void setMusica(int musica) {
    this.musica = musica;
}

public Polo getPolo() {
    return polo;
}

public void setPolo(Polo polo) {
    this.polo = polo;
}

public Set getCategorias() {
    return categorias;
}

public void setCategorias(Set categorias) {
    this.categorias = categorias;
}

}

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package br.ufpb.coperve.vo;

import java.util.Set;

/**
*

  • @author emerson
    */
    public class Categoria {

    private Integer id;
    private String nome;
    private Set cursos;

    public Integer getId() {
    return id;
    }

    public void setId(Integer id) {
    this.id = id;
    }

    public String getNome() {
    return nome;
    }

    public void setNome(String nome) {
    this.nome = nome;
    }

    public Set getCursos() {
    return cursos;
    }

    public void setCursos(Set cursos) {
    this.cursos = cursos;
    }

}

<?xml version="1.0" encoding="UTF-8"?> categoria_id_sequence
	<!-- Propriedades da classe -->
	<property name="nome" length="256"/>

             <set name="cursos" table="categorias_cursos">
                <key column="categoria_id" />
             <many-to-many column="curso_id" class="Curso"/>
             </set>
	
</class>
<?xml version="1.0" encoding="UTF-8"?>
	<!-- Propriedades da classe -->
	<property name="nome" length="50"/>
	<property name="nomeReduzido" length="12"/>
	<property name="codigoPrg" length="10"/>
	<property name="curriculoAtual" length="4"/>
	<property name="turno" length="1"/>
	<property name="musica" length="1"/>
	<property name="status" length="1"/>
	
	<many-to-one name="campus"
		column="campusid"
		not-null="true"/>

           <many-to-one name="polo"
		column="poloid"
		not-null="true"/>


             <set name="categorias" table="categorias_cursos">
                <key column="curso_id"/>
             <many-to-many column="categoria_id" class="Categoria"/>
             </set>
           
	
</class>

Alguém sabe dizer qual o problema?

DiegoWebby,

Dê um olhada neste mapeamento. Acredito que faltaram as definições de column em seus hbm.xml.

column="categoria_id" e column="curso_id"

Mapeamento entitdade Categoria

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE hibernate-mapping 
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
<class name="br.ufpb.coperve.vo.Categoria"> 
<!-- Identificador da classe --> 
<id name="id" column="categoria_id"> 
<generator class="sequence"> 
<param name="sequence">categoria_id_sequence</param> 
</generator> 
</id> 

<!-- Propriedades da classe --> 
<property name="nome" length="256"/> 

<set name="cursos" table="categorias_cursos"> 
<key column="categoria_id" /> 
<many-to-many column="curso_id" class="Curso"/> 
</set> 

</class> 
</hibernate-mapping> 


Mapeamento entitdade Curso

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE hibernate-mapping 
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
<class name="br.ufpb.coperve.vo.Curso"> 
<!-- Identificador da classe --> 
<id name="codigo" column="curso_id"/> 

<!-- Propriedades da classe --> 
<property name="nome" length="50"/> 
<property name="nomeReduzido" length="12"/> 
<property name="codigoPrg" length="10"/> 
<property name="curriculoAtual" length="4"/> 
<property name="turno" length="1"/> 
<property name="musica" length="1"/> 
<property name="status" length="1"/> 

<many-to-one name="campus" 
column="campusid" 
not-null="true"/> 

<many-to-one name="polo" 
column="poloid" 
not-null="true"/> 


<set name="categorias" table="categorias_cursos"> 
<key column="curso_id"/> 
<many-to-many column="categoria_id" class="Categoria"/> 
</set> 


</class> 
</hibernate-mapping> 

PS.: Por favor edite seu poste e coloque as tags onde existem código. O fórum agradece. :wink:

@braços