Fehler im Hibernate

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Leute,

ich probiere mich gerade an Hibernate aus.

Ich bekomme folgende Fehlermeldung.



Code:
Exception in thread "main" org.hibernate.MappingException: Unknown entity: de.mmertens.hibernateprojekt.personen.Benutzer
	at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:580)
	at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1365)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546)
	at de.mmertens.hibernateprojekt.test.Testklasse.main(Testklasse.java:31)

Hier meine Implementierung.

Die Klasse Benutzer
Code:
package de.mmertens.hibernateprojekt.personen;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.*;

@Entity
@Table(name="benutzer")
public class Benutzer {
	
	private Integer idBenutzer = null;
	
	private String vorname = null;
	
	private String name = null;
	
	public Benutzer(){
		
	}

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

	public void setIdBenutzer(Integer idBenutzer) {
		this.idBenutzer = idBenutzer;
	}

	@Column(name="vorname")
	public String getVorname() {
		return vorname;
	}

	public void setVorname(String vorname) {
		this.vorname = vorname;
	}

	@Column(name="nachname")
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

Die Mainklasse:

Code:
package de.mmertens.hibernateprojekt.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;


import de.mmertens.hibernateprojekt.personen.Benutzer;


public class Testklasse {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		AnnotationConfiguration configuration = new AnnotationConfiguration();
		configuration.configure();
		SessionFactory sessionFactory = configuration.buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		
		Benutzer benutzer = new Benutzer();
		
		benutzer.setName("Mertens");
		benutzer.setVorname("Markus");
		
		session.save(benutzer);
		
		
		transaction.commit();
		session.close();
		sessionFactory.close();
	}

}

Und die hibernate.cfg.xml


Code:
<?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">create</property>
        
       <mapping class="de.mmertens.hibernateprojekt.personen.Benutzer"/>
        
    </session-factory>
</hibernate-configuration>

Was habe ich falsch gemacht? Was macht die Fehlermeldung.
 
SlaterB hat gesagt.:
frag aber nicht mich wie man das richtig macht, Annotations sind mir ein Rätsel

Das ist halt das gleiche Problem wie bei java.util.Date und java.sql.Date, wenn man nicht aufpasst und den falschen import-Vorschlag der IDE wählt. Bei Annotations fällt das nur nicht so leicht auf, da der Compiler nicht meckert.
 
Danke, hat super geklappt.

Jetzt stehe ich vor anderen Problemen, aber mit denen möchte ich mich erst einmal auseinandersetzen.


Fragen wie, wie mache ich Left/right/inner join abfragen mit hibernate?

Wie kann ich mit Hibernate eine Abfrage über mehrere Tabellem machen?? Habe schonmal was von @onetomany gehört, aber muss ich mir erstmal alles im Netz raussuchen.

Danke schonmal, werden ebstimmt noch einige Fragen von mir kommen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben