# Hibernate Mapping Problem



## DerbyD (18. September 2007)

Hallo,

ich habe ein Problem, mir wird andauernd folgendes in Eclipse ausgeworfen:



> Exception in thread "main" org.hibernate.MappingException: Association references unmapped class: model.Mahnung
> at org.hibernate.cfg.HbmBinder.bindCollectionSecondPass(HbmBinder.java:2380)
> at org.hibernate.cfg.HbmBinder$CollectionSecondPass.secondPass(HbmBinder.java:2662)
> at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
> ...



die Mapping Datei existiert, ebenso wie die Klasse. Was läuft hier schief 

Vielen Dank im vorraus


----------



## finger-p (18. September 2007)

Von hier aus betrachtet liegt Dein Fehler exakt in Klasse 4, Zeile 211, Zeichen 42.... 
Nein - Scherz beiseite.. 

Etwas mehr müsstest Du schon verraten damit Dir geholfen werden kann. (Klassen, Mapping-Files)

Gruss


----------



## DerbyD (27. September 2007)

Ok, hier mal die restlichen Dateien

```
<?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
      <session-factory>
        <property name="connection.url">
          xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        </property>
        <property name="connection.driver_class">
          com.mysql.jdbc.Driver
        </property>
        <property name="connection.username">
          xxxxxxxxx
        </property>
        <property name="connection.password">
          xxxxxxxxxxxxx
        </property>
        <!-- Set AutoCommit to true -->
        <property name="connection.autocommit">
          true
        </property>
        <!-- SQL Dialect to use. Dialects are database specific -->
        <property name="dialect">
          org.hibernate.dialect.MySQLDialect
        </property>
        <!-- Mapping files -->
        <mapping resource="model/hibernate2/Mahnung.hbm.xml" />
        <mapping resource="model/hibernate2/Telefonnummer.hbm.xml" />
        <mapping resource="model/hibernate2/Autor.hbm.xml" />
        <mapping resource="model/hibernate2/Genre.hbm.xml" />
        <mapping resource="model/hibernate2/EMail.hbm.xml" />
        <mapping resource="model/hibernate2/MedienExemplar.hbm.xml" />
        <mapping resource="model/hibernate2/Schlagwort.hbm.xml" />
        <mapping resource="model/hibernate2/Verlagsort.hbm.xml" />
        <mapping resource="model/hibernate2/Ausleihe.hbm.xml" />
        <mapping resource="model/hibernate2/Person.hbm.xml" />
        <mapping resource="model/hibernate2/Medium.hbm.xml" />
      </session-factory>
    </hibernate-configuration>
```
Ausleih

```
<?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>
      <class name="model.Ausleihe" table="Ausleihe" >
          <id name="LeihID" type="java.lang.Long" column="LeihID" >
                <generator class="increment" />
          </id>

          <property name="letztertermin" type="java.sql.Date" column="letztertermin"/>
          <property name="rückgabedatum" type="java.sql.Date" column="rückgabedatum"/>
          <property name="Leihdatum" type="java.sql.Date" column="Leihdatum"/>
          <property name="ZuZahlenderBetrag" type="java.lang.Float" column="ZuZahlenderBetrag"/>

          <set name="Mahnung" cascade="all">
   			<key column="LeihID"/>
    		<one-to-many class="model.Mahnung"/>
		  </set>

		  <set name="MedienExemplar" table="leihtaus">
			<key column="LeihID"/>
			<many-to-many class="model.MedienExemplar" column="ExemplarID" />
		  </set>

      </class>
  </hibernate-mapping>
```
Mahnung

```
<?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>
      <class name="model.Mahung" table="Mahung" >
          <id name="id_Mahnung" type="java.lang.Long" column="id_Mahnung" >
                <generator class="increment" />
          </id>
          <property name="ausstellungsdatum" type="java.sql.Date" column="ausstellungsdatum"/>
          <property name="Mahnbetrag" type="java.lang.Float" column="Mahnbetrag"/>
          
      </class>
  </hibernate-mapping>
```

Hier nun die Klassen
-> Mahnung

```
package model;

import java.io.Serializable;
import java.sql.Date;

public class Mahnung implements Serializable
{

	/**
	 * @uml.property name="id_Mahnung"
	 */
	private long id_Mahnung;

	/**
	 * @uml.property name="ausstellungsdatum"
	 */
	private Date ausstellungsdatum;

	/**
	 * @uml.property name="mahnbetrag"
	 */
	private float mahnbetrag;

	/**
	 * Getter of the property <tt>id_Mahnung</tt>
	 * 
	 * @return Returns the id_Mahnung.
	 * @uml.property name="id_Mahnung"
	 */
	public long getId_Mahnung()
	{
		return id_Mahnung;
	}

	/**
	 * Setter of the property <tt>id_Mahnung</tt>
	 * 
	 * @param id_Mahnung
	 *          The id_Mahnung to set.
	 * @uml.property name="id_Mahnung"
	 */
	public void setId_Mahnung(long id_Mahnung)
	{
		this.id_Mahnung = id_Mahnung;
	}

	/**
	 * Getter of the property <tt>ausstellungsdatum</tt>
	 * 
	 * @return Returns the ausstellungsdatum.
	 * @uml.property name="ausstellungsdatum"
	 */
	public Date getAusstellungsdatum()
	{
		return ausstellungsdatum;
	}

	/**
	 * Setter of the property <tt>ausstellungsdatum</tt>
	 * 
	 * @param ausstellungsdatum
	 *          The ausstellungsdatum to set.
	 * @uml.property name="ausstellungsdatum"
	 */
	public void setAusstellungsdatum(Date ausstellungsdatum)
	{
		this.ausstellungsdatum = ausstellungsdatum;
	}

	/**
	 * Getter of the property <tt>mahnbetrag</tt>
	 * 
	 * @return Returns the mahnbetrag.
	 * @uml.property name="mahnbetrag"
	 */
	public float getMahnbetrag()
	{
		return mahnbetrag;
	}

	/**
	 * Setter of the property <tt>mahnbetrag</tt>
	 * 
	 * @param mahnbetrag
	 *          The mahnbetrag to set.
	 * @uml.property name="mahnbetrag"
	 */
	public void setMahnbetrag(float mahnbetrag)
	{
		this.mahnbetrag = mahnbetrag;
	}

}
```

--> Ausleih


```
package model;


import java.sql.Date;
import java.util.Collection;
import java.util.Currency;
import java.util.Iterator;

public class Ausleihe {

	/**
	 * @uml.property  name="LeihID"
	 */
	private long LeihID;

	/**
	 * Getter of the property <tt>LeihID</tt>
	 * @return  Returns the LeihID.
	 * @uml.property  name="LeihID"
	 */
	public long getLeihID() {
		return LeihID;
	}

	/**
	 * Setter of the property <tt>LeihID</tt>
	 * @param LeihID  The LeihID to set.
	 * @uml.property  name="LeihID"
	 */
	public void setLeihID(long LeihID) {
		this.LeihID = LeihID;
	}

	/**
	 * @uml.property  name="letztertermin"
	 */
	private Date letztertermin;

	/**
	 * Getter of the property <tt>letztertermin</tt>
	 * @return  Returns the letztertermin.
	 * @uml.property  name="letztertermin"
	 */
	public Date getLetztertermin() {
		return letztertermin;
	}

	/**
	 * Setter of the property <tt>letztertermin</tt>
	 * @param letztertermin  The letztertermin to set.
	 * @uml.property  name="letztertermin"
	 */
	public void setLetztertermin(Date letztertermin) {
		this.letztertermin = letztertermin;
	}

	/**
	 * @uml.property  name="rueckgabedatum"
	 */
	private Date rueckgabedatum;

	/**
	 * Getter of the property <tt>rueckgabedatum</tt>
	 * @return  Returns the rueckgabedatum.
	 * @uml.property  name="rueckgabedatum"
	 */
	public Date getRueckgabedatum() {
		return rueckgabedatum;
	}

	/**
	 * Setter of the property <tt>rueckgabedatum</tt>
	 * @param rueckgabedatum  The rueckgabedatum to set.
	 * @uml.property  name="rueckgabedatum"
	 */
	public void setRueckgabedatum(Date rueckgabedatum) {
		this.rueckgabedatum = rueckgabedatum;
	}

	/**
	 * @uml.property  name="Leihdatum"
	 */
	private Date Leihdatum;

	/**
	 * Getter of the property <tt>Leihdatum</tt>
	 * @return  Returns the Leihdatum.
	 * @uml.property  name="Leihdatum"
	 */
	public Date getLeihdatum() {
		return Leihdatum;
	}

	/**
	 * Setter of the property <tt>Leihdatum</tt>
	 * @param Leihdatum  The Leihdatum to set.
	 * @uml.property  name="Leihdatum"
	 */
	public void setLeihdatum(Date Leihdatum) {
		this.Leihdatum = Leihdatum;
	}

	/**
	 * @uml.property  name="ZuZahlenderBetrag"
	 */
	private float ZuZahlenderBetrag;

	/**
	 * Getter of the property <tt>ZuZahlenderBetrag</tt>
	 * @return  Returns the ZuZahlenderBetrag.
	 * @uml.property  name="ZuZahlenderBetrag"
	 */
	public float getZuZahlenderBetrag() {
		return ZuZahlenderBetrag;
	}

	/**
	 * Setter of the property <tt>ZuZahlenderBetrag</tt>
	 * @param ZuZahlenderBetrag  The ZuZahlenderBetrag to set.
	 * @uml.property  name="ZuZahlenderBetrag"
	 */
	public void setZuZahlenderBetrag(float ZuZahlenderBetrag) {
		this.ZuZahlenderBetrag = ZuZahlenderBetrag;
	}

	/** 
	 * @uml.property name="mahnung"
	 * @uml.associationEnd multiplicity="(0 -1)" inverse="ausleihe:Mahnung"
	 */
	private Collection<Mahnung> mahnung;

	/** 
	 * Getter of the property <tt>mahnung</tt>
	 * @return  Returns the mahnung.
	 * @uml.property  name="mahnung"
	 */
	public Collection<Mahnung> getMahnung() {
		return mahnung;
	}

	/**
	 * Returns an iterator over the elements in this collection. 
	 * @return  an <tt>Iterator</tt> over the elements in this collection
	 * @see java.util.Collection#iterator()
	 * @uml.property  name="mahnung"
	 */
	public Iterator<Mahnung> mahnungIterator() {
		return mahnung.iterator();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains no elements.
	 * @return  <tt>true</tt> if this collection contains no elements
	 * @see java.util.Collection#isEmpty()
	 * @uml.property  name="mahnung"
	 */
	public boolean isMahnungEmpty() {
		return mahnung.isEmpty();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains the specified element. 
	 * @param element  whose presence in this collection is to be tested.
	 * @see java.util.Collection#contains(Object)
	 * @uml.property  name="mahnung"
	 */
	public boolean containsMahnung(Mahnung Mahnung) {
		return mahnung.contains(Mahnung);
	}

	/**
	 * Returns <tt>true</tt> if this collection contains all of the elements in the specified collection.
	 * @param elements  collection to be checked for containment in this collection.
	 * @see java.util.Collection#containsAll(Collection)
	 * @uml.property  name="mahnung"
	 */
	public boolean containsAllMahnung(Collection<? extends Mahnung> mahnung) {
		return this.mahnung.containsAll(mahnung);
	}

	/**
	 * Returns the number of elements in this collection.
	 * @return  the number of elements in this collection
	 * @see java.util.Collection#size()
	 * @uml.property  name="mahnung"
	 */
	public int mahnungSize() {
		return mahnung.size();
	}

	/**
	 * Returns all elements of this collection in an array.
	 * @return  an array containing all of the elements in this collection
	 * @see java.util.Collection#toArray()
	 * @uml.property  name="mahnung"
	 */
	public Mahnung[] mahnungToArray() {
		return mahnung.toArray(new Mahnung[mahnung.size()]);
	}

	/**
	 * Ensures that this collection contains the specified element (optional operation). 
	 * @param element  whose presence in this collection is to be ensured.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="mahnung"
	 */
	public boolean addMahnung(Mahnung Mahnung) {
		return mahnung.add(Mahnung);
	}

	/** 
	 * Setter of the property <tt>mahnung</tt>
	 * @param mahnung  The mahnung to set.
	 * @uml.property  name="mahnung"
	 */
	public void setMahnung(Collection<Mahnung> mahnung) {
		this.mahnung = mahnung;
	}

	/**
	 * Removes a single instance of the specified element from this collection, if it is present (optional operation).
	 * @param element  to be removed from this collection, if present.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="mahnung"
	 */
	public boolean removeMahnung(Mahnung Mahnung) {
		return mahnung.remove(Mahnung);
	}

	/**
	 * Removes all of the elements from this collection (optional operation).
	 * @see java.util.Collection#clear()
	 * @uml.property  name="mahnung"
	 */
	public void clearMahnung() {
		mahnung.clear();
	}

	/** 
	 * @uml.property name="medienExemplar"
	 * @uml.associationEnd multiplicity="(1 -1)" inverse="ausleihe:MedienExemplar"
	 */
	private Collection<MedienExemplar> medienExemplar;

	/** 
	 * Getter of the property <tt>medienExemplar</tt>
	 * @return  Returns the medienExemplar.
	 * @uml.property  name="medienExemplar"
	 */
	public Collection<MedienExemplar> getMedienExemplar() {
		return medienExemplar;
	}

	/**
	 * Returns an iterator over the elements in this collection. 
	 * @return  an <tt>Iterator</tt> over the elements in this collection
	 * @see java.util.Collection#iterator()
	 * @uml.property  name="medienExemplar"
	 */
	public Iterator<MedienExemplar> medienExemplarIterator() {
		return medienExemplar.iterator();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains no elements.
	 * @return  <tt>true</tt> if this collection contains no elements
	 * @see java.util.Collection#isEmpty()
	 * @uml.property  name="medienExemplar"
	 */
	public boolean isMedienExemplarEmpty() {
		return medienExemplar.isEmpty();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains the specified element. 
	 * @param element  whose presence in this collection is to be tested.
	 * @see java.util.Collection#contains(Object)
	 * @uml.property  name="medienExemplar"
	 */
	public boolean containsMedienExemplar(MedienExemplar MedienExemplar) {
		return medienExemplar.contains(MedienExemplar);
	}

	/**
	 * Returns <tt>true</tt> if this collection contains all of the elements in the specified collection.
	 * @param elements  collection to be checked for containment in this collection.
	 * @see java.util.Collection#containsAll(Collection)
	 * @uml.property  name="medienExemplar"
	 */
	public boolean containsAllMedienExemplar(
			Collection<? extends MedienExemplar> medienExemplar) {
		return this.medienExemplar.containsAll(medienExemplar);
	}

	/**
	 * Returns the number of elements in this collection.
	 * @return  the number of elements in this collection
	 * @see java.util.Collection#size()
	 * @uml.property  name="medienExemplar"
	 */
	public int medienExemplarSize() {
		return medienExemplar.size();
	}

	/**
	 * Returns all elements of this collection in an array.
	 * @return  an array containing all of the elements in this collection
	 * @see java.util.Collection#toArray()
	 * @uml.property  name="medienExemplar"
	 */
	public MedienExemplar[] medienExemplarToArray() {
		return medienExemplar
				.toArray(new MedienExemplar[medienExemplar.size()]);
	}

	/**
	 * Ensures that this collection contains the specified element (optional operation). 
	 * @param element  whose presence in this collection is to be ensured.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="medienExemplar"
	 */
	public boolean addMedienExemplar(MedienExemplar MedienExemplar) {
		return medienExemplar.add(MedienExemplar);
	}

	/** 
	 * Setter of the property <tt>medienExemplar</tt>
	 * @param medienExemplar  The medienExemplar to set.
	 * @uml.property  name="medienExemplar"
	 */
	public void setMedienExemplar(Collection<MedienExemplar> medienExemplar) {
		this.medienExemplar = medienExemplar;
	}

	/**
	 * Removes a single instance of the specified element from this collection, if it is present (optional operation).
	 * @param element  to be removed from this collection, if present.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="medienExemplar"
	 */
	public boolean removeMedienExemplar(MedienExemplar MedienExemplar) {
		return medienExemplar.remove(MedienExemplar);
	}

	/**
	 * Removes all of the elements from this collection (optional operation).
	 * @see java.util.Collection#clear()
	 * @uml.property  name="medienExemplar"
	 */
	public void clearMedienExemplar() {
		medienExemplar.clear();
	}

}
```


----------



## zerix (27. September 2007)

Hallo,

ich hab jetzt leider keine Zeit, aber wenn das Problem bis dahin noch nicht gelöst ist, werde ich es mir nachher mal anschauen. 

Bitte nutze das nächste mal die Code-Tags und nicht die Zitat-Tags.

MFG

zEriX


----------



## Kulabac (4. Oktober 2007)

Also der Fehler ist eigentlich ganz einfach 

Es existiert kein Mapping für die Klasse model.Mahnung - sagt er doch schon in der Fehlermeldung. Was existiert ist ein Mapping für die Klasse model.Mahung, aber damit kann er natürlich nichts anfangen ... was so ein kleines n doch ausmacht


----------

