HibernateUtil com ManyToMany

Pessoal,
Só acontece para as classes que possuem relacionamento.

Obrigado.

Alguem pode me ajudar???
Estou tentando criar um HibernateUtil, estou tendo problema
com as classes que possuem relacionamento, segue abaixo o
meu codigo e erro.

Obs.: Para classes que não possuem relacionamentos funciona sem problema.

Estou usando Eclipse, Hibernate 3.1 com annotations.

HibernateUtil

import org.hibernate.*;
import org.hibernate.cfg.*;
import br.com.exemplo.cadastro.*;


public class HibernateUtil {
	private static final SessionFactory sessionFactory;

	static {
		try {
				sessionFactory = new AnnotationConfiguration()
							.addAnnotatedClass(CadNivel01.class)
							.buildSessionFactory();
				//.addResource("br/com/empresa/banco/orm.xml")

		} catch (Throwable ex) {
				// Log exception!
				throw new ExceptionInInitializerError(ex);
			}
	}
	
	public static Session getSession() throws HibernateException {
		return sessionFactory.openSession();
	}
}

ERRO - Este erro ocorre na execução da linha .buildSessionFactory();

Exception in thread "main" java.lang.ExceptionInInitializerError
	at br.com.exemplo.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:27)
	at br.com.exemplo.hibernate.Teste.main(Teste.java:22)
Caused by: org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity() defined: br.com.exemplo.cadastro.CadNivel01.cadNivel02s
	at org.hibernate.cfg.annotations.CollectionBinder.getCollectionType(CollectionBinder.java:486)
	at org.hibernate.cfg.annotations.CollectionBinder.bind(CollectionBinder.java:378)
	at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1473)
	at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:710)
	at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:452)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:268)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1283)
	at br.com.exemplo.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:22)
	... 1 more

CLASSE CadNivel01


package br.com.exemplo.cadastro;

// Generated 10/01/2007 14:10:43 by Hibernate Tools 3.2.0.beta8

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * CadNivel01 generated by hbm2java
 */
@Entity
@Table(name = "CAD_NIVEL01", schema = "dbo", catalog = "WISE", uniqueConstraints = {})
public class CadNivel01 implements java.io.Serializable {

	// Fields    

	private int codnivel01;

	private String descricao;

	private Short status;

	private Set cadNivel02s = new HashSet(0);

	// Constructors

	/** default constructor */
	public CadNivel01() {
	}

	/** minimal constructor */
	public CadNivel01(int codnivel01) {
		this.codnivel01 = codnivel01;
	}

	/** full constructor */
	public CadNivel01(int codnivel01, String descricao, Short status,
			Set cadNivel02s) {
		this.codnivel01 = codnivel01;
		this.descricao = descricao;
		this.status = status;
		this.cadNivel02s = cadNivel02s;
	}

	// Property accessors
	@Id
	@Column(name = "codnivel01", unique = true, nullable = false, insertable = true, updatable = true)
	public int getCodnivel01() {
		return this.codnivel01;
	}

	public void setCodnivel01(int codnivel01) {
		this.codnivel01 = codnivel01;
	}

	@Column(name = "descricao", unique = false, nullable = true, insertable = true, updatable = true)
	public String getDescricao() {
		return this.descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	@Column(name = "status", unique = false, nullable = true, insertable = true, updatable = true)
	public Short getStatus() {
		return this.status;
	}

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

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "cadNivel01")
	public Set getCadNivel02s() {
		return this.cadNivel02s;
	}

	public void setCadNivel02s(Set cadNivel02s) {
		this.cadNivel02s = cadNivel02s;
	}

}

É só definir o tipo de classe no Set&lt?&gt!!! Sendo:

private Set<NomeClasse> cadNivel02s

É isso ae!!! Falow

Vlw dders, agora o erro esta em utilizar o mappedBy nas duas classes, estou estudando para ver como posso solucionar este problema, sei que este tipo de relacionamento é meio complicado. Se voce puder me dar uma ajuda. O erro é referente a outra classe (Usuario/SegPerfil) mais é o mesmo problema ManyToMany.

Obrigado.

Exception in thread "main" java.lang.ExceptionInInitializerError
at br.com.wise.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:32)
at br.com.wise.hibernate.Teste.main(Teste.java:22)
Caused by: org.hibernate.AnnotationException: Illegal use of mappedBy on both sides of the relationship: br.com.empresa.cadastro.Segperfil.usuarios
at org.hibernate.cfg.annotations.TableBinder.bindFk(TableBinder.java:183)
at org.hibernate.cfg.annotations.CollectionBinder.bindCollectionSecondPass(CollectionBinder.java:1253)
at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1101)
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:567)
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:50
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1127)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:296)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1283)
at br.com.empresa.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:27)
... 1 more

Problema resolvido, a solução aplicada foi remover um dos mappedby.
Valeu galera.