Auf Thema antworten

Hi zusammen,


ich versuche mich an einer einfachen Hibernate-Programmierung. Leider bekomme ich eine Exception, die ich nicht direkt zuordnen kann.


Also hier die Fehlermeldung:



Domain Klassen


[code=Java] package de.hbrs.datenanalyse.domain;


import java.util.Set;


import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.Table;

import javax.persistence.OneToMany;

import javax.persistence.Column;


@Entity

@Table(name = "datensaetze")

public class Datensatz {

   

    @Id

    @GeneratedValue

    @Column (name = "datensatz_id")

    private Long id;

   

    @Column (name = "datensatzname")

    private String datensatzname;

   

    @Column (name = "jahr")

    private Integer jahr;

  

   

    public Datensatz(){       

    }

   

    public Long getId() {

        return id;

    }


    public void setId(Long id) {

        this.id = id;

    }


    public String getDatensatzname() {

        return datensatzname;

    }


    public void setDatensatzname(String datensatzname) {

        this.datensatzname = datensatzname;

    }


    public Integer getJahr() {

        return jahr;

    }


    public void setJahr(Integer jahr) {

        this.jahr = jahr;

    }

   

    @OneToMany(mappedBy="Zeile")

    private Set<Zeile> zeilen;

    public Set<Zeile> getZeilen() {

        return zeilen;

    }


    public void setZeilen(Set<Zeile> zeilen) {

        this.zeilen = zeilen;

    }

       

}[/code]


[code=Java] package de.hbrs.datenanalyse.domain;


import java.util.Set;


import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

import javax.persistence.OneToMany;


@Entity

@Table(name = "kreise")

public class Kreis {

   

    @Id

    @Column (name = "kreisschluessel")

    private Long kreisschluessel;

   

    @Column (name = "kreisname")

    private String kreisname;

   

    @Column (name = "einwohner")

    private Integer einwohner;

   

    @Column (name = "beschreibung")

    private String beschreibung;

   

    public Kreis(){

    }


    public Long getKreisschluessel() {

        return kreisschluessel;

    }


    public void setKreisschluessel(Long kreisschluessel) {

        this.kreisschluessel = kreisschluessel;

    }


    public String getKreisname() {

        return kreisname;

    }


    public void setKreisname(String kreisname) {

        this.kreisname = kreisname;

    }


    public Integer getEinwohner() {

        return einwohner;

    }


    public void setEinwohner(Integer einwohner) {

        this.einwohner = einwohner;

    }


    public String getBeschreibung() {

        return beschreibung;

    }


    public void setBeschreibung(String beschreibung) {

        this.beschreibung = beschreibung;

    }

   

    @OneToMany(mappedBy="Zeile")

    private Set<Zeile> zeilen;

    public Set<Zeile> getZeilen() {

        return zeilen;

    }


    public void setZeilen(Set<Zeile> zeilen) {

        this.zeilen = zeilen;

    }

   

   

} [/code]


[code=Java]

package de.hbrs.datenanalyse.domain;


import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.Table;


@Entity

@Table(name = "zeilen")

public class Zeile {

   

    @Id

    @GeneratedValue

    @Column (name = "zeilen_id")

    private Long id;

   

    @Column (name = "wert")

    private Double wert;

   

    public Zeile(){

    }


    public Long getId() {

        return id;

    }


    public void setId(Long id) {

        this.id = id;

    }


    public Double getWert() {

        return wert;

    }


    public void setWert(Double wert) {

        this.wert = wert;

    }

   

    @ManyToOne

    @JoinColumn(name="datensatz_id")

    private Datensatz datensatz;

    public Datensatz getDatensatz() {

        return datensatz;

    }


    public void setDatensatz(Datensatz datensatz) {

        this.datensatz = datensatz;

    }

   

   

    @ManyToOne

    @JoinColumn(name="kreisschluessel")

    private Kreis kreis;

    public Kreis getKreis() {

        return kreis;

    }


    public void setKreis(Kreis kreis) {

        this.kreis = kreis;

    }


}


[/code]


Hilfsklassen & Test


[code=Java] package de.hbrs.datenanalyse;


import java.util.HashSet;

import java.util.Set;


import org.hibernate.classic.Session;


import de.hbrs.datenanalyse.domain.Datensatz;

import de.hbrs.datenanalyse.domain.Kreis;

import de.hbrs.datenanalyse.domain.Zeile;


import de.hbrs.datenanalyse.HibernateFacade;



public class CreateTest {


    /**

     * @param args

     */

    public static void main(String[] args) throws Exception{

       

        HibernateFacade facade = new HibernateFacade();


        Session session = facade.getSession();

        session.beginTransaction();

       

        Kreis kreis = new Kreis();

        kreis.setKreisschluessel((long) 123);

        kreis.setKreisname("Rhein-Sieg-Kreis");

        kreis.setEinwohner(1201288);

        kreis.setBeschreibung("Rhein-Sieg-Kreis");

       

        Zeile zeile1 = new Zeile();

        zeile1.setKreis(kreis);

        zeile1.setWert(45.3);

       

        Zeile zeile2 = new Zeile();

        zeile2.setKreis(kreis);

        zeile2.setWert(54.3);

   

        Set<Zeile> zeile = new HashSet<Zeile>();

        zeile.add(zeile1);

        zeile.add(zeile2);

       

        Datensatz datensatz = new Datensatz();

        datensatz.setDatensatzname("Schweinedichte");

        datensatz.setJahr(2009);

        datensatz.setZeilen(zeile);


        session.getTransaction().commit();

       

       

       


    }


}

[/code]


[code=Java]

package de.hbrs.datenanalyse;


import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

import org.hibernate.classic.Session;


public class HibernateFacade {


    private SessionFactory sessionFactory;


    public HibernateFacade() throws Exception {


    // A SessionFactory is set up once for an application

    Configuration config = new Configuration().configure();


    // configures settings from hibernate.cfg.xml

    sessionFactory = config.buildSessionFactory();


    System.out.println("Hibernate successfully initiated");

    }


    public Session getSession() {

    return sessionFactory.getCurrentSession();

    }


    public Session createNewSession() {

    return sessionFactory.openSession();

    }

}


[/code]


Konfigurations-XML

[code=Java]

<?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">

            com.mysql.jdbc.Driver

        </property>

        <property name="dialect">

            org.hibernate.dialect.MySQLDialect

        </property>


        <property name="connection.url">jdbc:mysql://localhost/datenanalyse</property>

        <property name="connection.username">root</property>

        <property name="connection.password"></property>


        <!-- this will show us all sql statements -->

        <property name="hibernate.show_sql">true</property>


        <!-- more options -->

        <property name="current_session_context_class">thread</property>

        <property name="cache.provider_class">

            org.hibernate.cache.NoCacheProvider

        </property>


        <property name="hibernate.max_fetch_depth">3</property>

        <property name="max_fetch_depth">3</property>


        <!-- Drop and re-create the database schema on startup -->

        <!-- <property name="hbm2ddl.auto">update/create</property> -->

        <property name="hbm2ddl.auto">update</property>

       

        <mapping class="de.hbrs.datenanalyse.domain.Datensatz" />

        <mapping class="de.hbrs.datenanalyse.domain.Zeile" />

        <mapping class="de.hbrs.datenanalyse.domain.Kreis" />


    </session-factory>


</hibernate-configuration>


[/code]


Was läuft noch falsch? Ich weiss leider nicht mehr weiter.


Grüße


David



Oben