Unerklärliche org.hibernate.MappingException

Paddius

Mitglied
Moin,

ich versuche mich gerade mit dem Buch "Spring&Hibernate" aus dem Hanser-Verlag etwas in Hibernate einzulesen. Um das gelesene anzuwenden, habe ich einfach mal einige eigene Beans erstellt, welche letztendlich dazu dienen sollen, Daten für eine Motorsport-Meisterschaft aufzunehmen um irgendwann mal eine Anwendung zu schreiben, womit man eben solche managen kann.

Der Fehler ist der folgende:
Code:
    org.hibernate.MappingException: Could not determine type for: de.nowak.racestandingapp.data.beans.Ergebnis, at table: weekends, for columns: [org.hibernate.mapping.Column(weekend_quali)]
            at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:306)
            at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:290)
            at org.hibernate.mapping.Property.isValid(Property.java:217)
            at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:463)
            at org.hibernate.mapping.RootClass.validate(RootClass.java:235)
            at org.hibernate.cfg.Configuration.validate(Configuration.java:1332)
            at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1835)
            at de.nowak.racestandingapp.data.io.Installer.restored(Installer.java:14)
            at org.netbeans.core.startup.NbInstaller.loadCode(NbInstaller.java:426)
            at org.netbeans.core.startup.NbInstaller.load(NbInstaller.java:366)
            at org.netbeans.ModuleManager.enable(ModuleManager.java:944)
            at org.netbeans.core.startup.ModuleList.installNew(ModuleList.java:318)
            at org.netbeans.core.startup.ModuleList.trigger(ModuleList.java:254)
            at org.netbeans.core.startup.ModuleSystem.restore(ModuleSystem.java:286)
            at org.netbeans.core.startup.Main.getModuleSystem(Main.java:172)
            at org.netbeans.core.startup.Main.start(Main.java:302)
            at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:114)
    [catch] at java.lang.Thread.run(Thread.java:619)

Die anscheinend betroffenen Klassen sind die folgenden:
Java:
    @Entity
    @Table(name = "results")
    public class Ergebnis {
        private Integer id;
        private List<Fahrer> ergebnis;

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        public Integer getId() {
            return id;
        }

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

        @OneToMany
        @JoinColumn(name = "result_fk")
        @Column(name = "result")
        public List<Fahrer> getErgebnis() {
            return ergebnis;
        }

        public void setErgebnis(List<Fahrer> ergebnis) {
            this.ergebnis = ergebnis;
        }

        @Override
        public boolean equals(Object obj) {
            if (this == obj) {
                return true;
            }
            if (obj == null || Hibernate.getClass(this) != Hibernate.getClass(obj)) {
                return false;
            }

            Ergebnis erg = (Ergebnis) obj;
            if (!this.getErgebnis().equals(erg)) {
                return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hash = 3;
            hash = 89 * hash + (this.id != null ? this.id.hashCode() : 0);
            hash = 89 * hash + (this.ergebnis != null ? this.ergebnis.hashCode() : 0);
            return hash;
        }
    }

Java:
    @Entity
    @Table(name = "weekends")
    public class Rennwochenende {
        private Integer id;
        private Strecke strecke;
        private Ergebnis quali;
        private Ergebnis rennen;
        private Date termin;

        public Rennwochenende() {
            System.out.println("Konstruktor Rennwochenende");
        }

        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        public Integer getId() {
            return id;
        }

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

        @Column(name = "weekend_quali")
        public Ergebnis getQuali() {
            return quali;
        }

        public void setQuali(Ergebnis quali) {
            this.quali = quali;
        }

        @Column(name = "weekend_race")
        public Ergebnis getRennen() {
            return rennen;
        }

        public void setRennen(Ergebnis rennen) {
            this.rennen = rennen;
        }

        @Column(name = "weekend_date")
        public Date getTermin() {
            return termin;
        }

        public void setTermin(Date termin) {
            this.termin = termin;
        }

        @Column(name = "weekend_track")
        public Strecke getStrecke() {
            return strecke;
        }

        public void setStrecke(Strecke strecke) {
            this.strecke = strecke;
        }
    }

Letztlich noch meiner hibernate.cfg.xml:
[XML]
<?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.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc😛ostgresql://192.168.56.101/racestandings</property>
<property name="connection.username">postgres</property>
<property name="connection.password">1234</property>

<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>

<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">true</property>

<mapping class="de.nowak.racestandingapp.data.beans.Ergebnis"/>
<mapping class="de.nowak.racestandingapp.data.beans.Fahrer"/>
<mapping class="de.nowak.racestandingapp.data.beans.Meisterschaft"/>
<mapping class="de.nowak.racestandingapp.data.beans.Rennwochenende"/>
<mapping class="de.nowak.racestandingapp.data.beans.Strecke"/>
<mapping class="de.nowak.racestandingapp.data.beans.Team"/>
</session-factory>
</hibernate-configuration>
[/XML]

Auftreten tut der Fehler in folgender Methode meines Netbeans-Platform Module Installers, um die SessionFactory beim Anwendungsstart zu intialisieren:
Java:
import org.hibernate.cfg.Configuration;
import org.openide.modules.ModuleInstall;

public class Installer extends ModuleInstall {

    @Override
    public void restored() {
        DB.sessionFactory =
                new Configuration().configure().buildSessionFactory();
    }
}

So, ne Menge Code. Ich hoffe, mir kann jemand sagen, woran das liegt. Hoffentlich ists nur ein banaler Anfängerfehler. Wenn Ihr sonst noch was braucht, einfach Bescheid sagen.

Grüße,
Patrick
 
funktioniert es wenn du die Faher-Liste aus Ergebnis herausnimmst?

nach einem älteren Thema
http://www.java-forum.org/data-tier/76881-could-not-determine-type-exception.html
und den Link darin habe ich das Gefühl, dass diese Exception auftreten kann wenn generell irgendwo anders der Fehler liegt, andere Klassen nicht funktionieren

fange ganz einfach mit einer Klassen nach der anderen an, erstmal keine bzw. wenig Verknüpfungen, alle Tabellen einzelnen,
dann nach und nach vernetzen

und bitte bitte:
wenn es eine Klasse Ergebnis gibt, dann alle Variablen im Programm, die ergebnis heißen, auch nur von diesem Typ deklarieren,
nicht List<Fahrer> 😉
 
Danke für deinen Tipp. Habe daraufhin nochmal alle Mappings überprüft und festgestellt, dass doch noch einige fehlen..so einfach kanns manchmal sein.

P.S.: Ja, die Namenswahl des Feldes
Code:
ergebnis
in der Klasse
Code:
Ergebnis
war wirklich blöd. Dass heisst nun
Code:
reihenfolge
. Danke auch dafür 😉
 

Neue Themen


Zurück
Oben