Hallo zusammen,
ich versuch mich in Hibernate einzuarbeiten und habe ein Problem mit der Umsetzung einer many-to-many Beziehung.
Wenn ich in meiner Main Methode (siehe unten) auf die Collection in der Zeile
 
"aTermin.addTeilnehmer(aPerson1);"
zugreifen möchte, gibt er mir die unten aufgeführte Fehlermeldung aus.
Nachstehend die üblichen Informationen. Ich hoffe ihr könnt mir helfen.
Felix
Hibernate version:3.3 
Mapping documents: 
<?xml version="1.0" ?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
    Document   : Termin.hbm.xml
    Created on : 29. Mai 2007, 09:43
    Author     : F.Thomas
    Description:
        Purpose of the document follows.
-->
<hibernate-mapping package="test1">
     <class name="Termin">
        <id name="id">
            <generator class="native" />
        </id>
        <property name="titel"/>
        <property name="beschreibung"/>
        <property name="ort"/>
        <many-to-one name="eigentuemer" column="owner" />
        <list name="alternativZeiten" table="ALT_Zeit">
            <key column="id"/>
            <list-index column="lfd_nr"/>
            <composite-element class="test1.Zeitpunkt">
                <property name="minute" />
                <property name="stunde" />
                <property name="tag" />
                <property name="monat" />
                <property name="jahr" />
            </composite-element>
        </list>
        
        <list name="teilnehmer" table="termin_teilnehmer">
            <key column="termin_id"/>
            <list-index column="ind"/>
            <many-to-many column="person_fid" class="test1.Person" />
        </list>
        
    </class>
</hibernate-mapping>
<?xml version="1.0" ?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="test1">
    <class name="Person">
        <id name="id">
            <generator class="native" />
        </id>
        <property name="vorname"/>
        <property name="nachname"/>
        
    </class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
package test1;
public class Start {
	public static void main(String[] args)throws Exception {
		PersonController aPC = new PersonController();
		Person aPerson1 = new Person();
		Person aPerson2 = new Person();
		aPerson1 = aPC.loadPerson(1);
		aPerson2 = aPC.loadPerson(2);
		System.out.println(aPerson1.toString());
		System.out.println(aPerson2.toString());
		
		TerminController testwerte= new TerminController();
		testwerte.setUp();
		Termin aTermin = new Termin();
		aTermin = testwerte.loadTermin(1);
		System.out.println(aTermin.toString());
//Hier gibts die Exception
		aTermin.addTeilnehmer(aPerson1);
		aTermin.addTeilnehmer(aPerson2);
		testwerte.saveTermin(aTermin);
	}
	
}
package test1;
import java.util.*;
public class Termin {
	private long id;
	private String titel;
	private String beschreibung;
	private String ort;
	private Zeitpunkt zeitpunkt;
    private List<Zeitpunkt> alternativZeiten = new ArrayList<Zeitpunkt>();
    private List<Person> teilnehmer = new LinkedList<Person>();
    private Person eigentuemer;
    
    public List<Person> getTeilnehmer(){
    	return teilnehmer;
    }
    
    public void setTeilnehmer(List<Person> teilnehmer){
    	this.teilnehmer = teilnehmer;
    }
    
    public void addTeilnehmer(Person aPerson){
    	teilnehmer.add(aPerson);
    }
    public Person getTeilnehmer(int id){
    	return teilnehmer.get(id);
    }
    
    public void addAlternativZeit (Zeitpunkt aZeitpunkt ){
        getAlternativZeiten().add(aZeitpunkt);
    }
        
	public String getBeschreibung() {
		return beschreibung;
	}
	public void setBeschreibung(String beschreibung) {
		this.beschreibung = beschreibung;
	}
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getOrt() {
		return ort;
	}
	public void setOrt(String ort) {
		this.ort = ort;
	}
	public String getTitel() {
		return titel;
	}
	public void setTitel(String titel) {
		this.titel = titel;
	}
	public Zeitpunkt getZeitPunkt() {
		return zeitpunkt;
	}
	public void setZeitPunkt(Zeitpunkt zeitPunkt) {
		this.zeitpunkt = zeitPunkt;
	}
    public String toString(){
        return "ID: " + id + ", Titel: " + titel + ", Beschreibung: " + beschreibung + ", Ort: " + ort + ", Zeitpunkt: " + zeitpunkt ;
    }
    public List<Zeitpunkt> getAlternativZeiten() {
        return alternativZeiten;
    }
    public void setAlternativZeiten(List<Zeitpunkt> alternativZeiten) {
        this.alternativZeiten = alternativZeiten;
    }
    public Person getEigentuemer() {
        return eigentuemer;
    }
    public void setEigentuemer(Person owner) {
        this.eigentuemer = owner;
    }
}
/*
 * Person.java
 *
 * Created on 31. Mai 2007, 16:55
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package test1;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author F.Thomas
 */
public class Person {
    private long id;
    private String vorname;
    private String nachname;
   
    /** Creates a new instance of Person */
    public Person() {
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getVorname() {
        return vorname;
    }
    public void setVorname(String vorname) {
        this.vorname = vorname;
    }
    public String getNachname() {
        return nachname;
    }
    public void setNachname(String nachname) {
        this.nachname = nachname;
    }
    public String toString(){
    		return this.id +" " + this.vorname + " " + this.nachname;
    }
}
package test1;
import java.util.*;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.hibernate.Query;
public class TerminController {
	private SessionFactory aSessionFactory;
	private Termin termin;
        private Session session;
        private LinkedList<Termin> termine = new LinkedList<Termin>();
	
	
	public Termin getTermin() {
		return termin;
	}
	public void setTermin(Termin termin) {
		this.termin = termin;
	}
        public void closeSession(){
            this.session.close();
        }
	protected void setUp(){
        Configuration configuration = new Configuration().configure();  
      
        aSessionFactory = configuration.buildSessionFactory();
        session = aSessionFactory.openSession();
    }
	public void saveTermin(Termin aTermin){
		
		Transaction transaction = null;
		try{
			transaction = session.beginTransaction();
			session.save(aTermin);
			transaction.commit();
			
		}catch(HibernateException e){
			if (transaction !=null){
				transaction.rollback();
				throw e;
			}
		}finally{
			if (session !=null){
				//session.close();
			}
		}
	}
	
	public Termin loadTermin(long id){
                    return (Termin)session.load(Termin.class, id);	
	}
    public LinkedList loadTermine(String ort){
        Query query =session.createQuery("from Termin where ort='" + ort + "'");
        Iterator<Termin> iterator =  query.list().iterator();
		while(iterator.hasNext()) {
                            termine.add(iterator.next());
		}	        
        return termine;
    }
        
    public void updateTermin(long id, Termin newTermin){
        Termin aTermin=null;
        aTermin = (Termin) session.load(Termin.class, id);
        Transaction transaction = session.beginTransaction();
        if (newTermin.getTitel()!=null){
         aTermin.setTitel(newTermin.getTitel());   
        }
        if (newTermin.getBeschreibung()!=null){
            aTermin.setBeschreibung(newTermin.getBeschreibung());
        }
        if (newTermin.getZeitPunkt()!=null){
            aTermin.setZeitPunkt(newTermin.getZeitPunkt()); 
        }
        if (newTermin.getOrt()!=null){
            aTermin.setOrt(newTermin.getOrt());   
        }
        transaction.commit();
    }
    
    public void deleteTermin(long id){
        Termin aTermin= (Termin)session.get(Termin.class,id);
        if (aTermin!=null){
        Transaction transaction = session.beginTransaction();
        session.delete(aTermin);
        transaction.commit();
        }
    }
    public String toString(){
        String output="Termine";
        Iterator<Termin> iterator = termine.iterator();
            while(iterator.hasNext()){
                Termin aTermin = iterator.next();
                    output= output + " | " + aTermin.toString();
            }
        return output;
    }
}
Full stack trace of any exception that occurs:
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not initialize a collection: [test1.Termin.teilnehmer#1]
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.loader.Loader.loadCollection(Loader.java:2001)
	at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:36)
	at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:565)
	at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
	at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1716)
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:344)
	at org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:183)
	at org.hibernate.collection.PersistentList.add(PersistentList.java:140)
	at test1.Termin.addTeilnehmer(Termin.java:22)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
	at test1.Termin$$EnhancerByCGLIB$$e7277732.addTeilnehmer(<generated>)
	at test1.Start.main(Start.java:51)
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'tool.termin_teilnehmer' doesn't exist
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1403)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
	at org.hibernate.loader.Loader.doQuery(Loader.java:674)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
	at org.hibernate.loader.Loader.loadCollection(Loader.java:1994)
	... 15 more
Name and version of the database you are using: MySQL Server 5.0
The generated SQL (show_sql=true):
Debug level Hibernate log excerpt:
Problems with Session and transaction handling?
Read this: 
http://hibernate.org/42.html