Hey Leute,
ich bin ein absoluter Newbie in Hibernate. Habe gerade mal versucht das erste Beispiel aus einem Buch zu implementieren. Habe soweit alles an meine Bedürfnisse angepasst und kriege folgenden StackTrace:
Meine hibernate.cfg.xml::
[XML]<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Der JDBC-URL der Datenbank-Instanz -->
<property name="hibernate.connection.url">
jdbc:mysql://localhost/hibernate <!--tetris?user=root&password=-->
<!--jdbc:hsqldb:file:testdb;shutdown=true;-->
</property>
<!-- Die JDBC-Treiberklasse -->
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
<!--org.hsqldb.jdbcDriver-->
</property>
<!-- Der Benutzername der Datenbank -->
<property name="hibernate.connection.username">root<!--sa--></property>
<!-- Das Kennwort der Datenbank -->
<property name="hibernate.connection.password"></property>
<!-- im Buch isses drin! --> <property name="hibernate.connection.pool_size">0</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect<!--HSQLDialect-->
</property>
<property name="hibernate.show_sql">true<!--false--></property>
<!-- Import der Mapping Resourcen -->
<mapping resource="sample/entity/Message.hbm.xml" />
<!--<mapping class="sample/entity/Message" />-->
</session-factory>
</hibernate-configuration>[/XML]
Ich habe diese Datei in meinem Classpath liegen ([...]/bin) und dann in sample/entity/ liegt meine Message.hbm.xml und auch die Message.class
Daher verstehe ich nicht ganz, warum er die Klasse nicht findet. Sie befindet sich ja wie gefordert im gleichen Verzeichnis wie meine Mapping-Datei...
Mein Javacode mit dem ich das ganze ausführe ist:
Danke für die Hilfe!!!! Ich weiß es nicht weiter...!
ich bin ein absoluter Newbie in Hibernate. Habe gerade mal versucht das erste Beispiel aus einem Buch zu implementieren. Habe soweit alles an meine Bedürfnisse angepasst und kriege folgenden StackTrace:
Java:
Okt 13, 2012 3:50:00 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
Okt 13, 2012 3:50:00 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.7.Final}
Okt 13, 2012 3:50:00 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Okt 13, 2012 3:50:00 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Okt 13, 2012 3:50:00 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
Okt 13, 2012 3:50:00 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
Okt 13, 2012 3:50:00 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: sample/entity/Message.hbm.xml
Okt 13, 2012 3:50:00 PM org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity
WARN: HHH000223: Recognized obsolete hibernate namespace [url=http://hibernate.sourceforge.net/]Hibernate - JBoss Community[/url]. Use namespace [url=http://www.hibernate.org/dtd/]Index of /dtd/hibernate[/url] instead. Refer to Hibernate 3.6 Migration Guide!
Okt 13, 2012 3:50:00 PM org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
Okt 13, 2012 3:50:01 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
Okt 13, 2012 3:50:01 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 0
Okt 13, 2012 3:50:01 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: false
Okt 13, 2012 3:50:01 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost/hibernate]
Okt 13, 2012 3:50:01 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=root, password=****}
Okt 13, 2012 3:50:01 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLInnoDBDialect
Okt 13, 2012 3:50:01 PM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
Okt 13, 2012 3:50:01 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
Exception in thread "main" org.hibernate.MappingException: java.lang.ClassNotFoundException: Message
at org.hibernate.envers.configuration.RevisionInfoConfiguration.configure(RevisionInfoConfiguration.java:264)
at org.hibernate.envers.configuration.AuditConfiguration.<init>(AuditConfiguration.java:102)
at org.hibernate.envers.configuration.AuditConfiguration.getFor(AuditConfiguration.java:165)
at org.hibernate.envers.event.EnversIntegrator.integrate(EnversIntegrator.java:64)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:301)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1788)
at sample.PopulateMessages.main(PopulateMessages.java:21)
Caused by: java.lang.ClassNotFoundException: Message
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.hibernate.annotations.common.util.ReflectHelper.classForName(ReflectHelper.java:143)
at org.hibernate.annotations.common.reflection.java.JavaReflectionManager.classForName(JavaReflectionManager.java:117)
at org.hibernate.envers.configuration.RevisionInfoConfiguration.configure(RevisionInfoConfiguration.java:262)
... 7 more
Meine hibernate.cfg.xml::
[XML]<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Der JDBC-URL der Datenbank-Instanz -->
<property name="hibernate.connection.url">
jdbc:mysql://localhost/hibernate <!--tetris?user=root&password=-->
<!--jdbc:hsqldb:file:testdb;shutdown=true;-->
</property>
<!-- Die JDBC-Treiberklasse -->
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
<!--org.hsqldb.jdbcDriver-->
</property>
<!-- Der Benutzername der Datenbank -->
<property name="hibernate.connection.username">root<!--sa--></property>
<!-- Das Kennwort der Datenbank -->
<property name="hibernate.connection.password"></property>
<!-- im Buch isses drin! --> <property name="hibernate.connection.pool_size">0</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect<!--HSQLDialect-->
</property>
<property name="hibernate.show_sql">true<!--false--></property>
<!-- Import der Mapping Resourcen -->
<mapping resource="sample/entity/Message.hbm.xml" />
<!--<mapping class="sample/entity/Message" />-->
</session-factory>
</hibernate-configuration>[/XML]
Ich habe diese Datei in meinem Classpath liegen ([...]/bin) und dann in sample/entity/ liegt meine Message.hbm.xml und auch die Message.class
Daher verstehe ich nicht ganz, warum er die Klasse nicht findet. Sie befindet sich ja wie gefordert im gleichen Verzeichnis wie meine Mapping-Datei...
Mein Javacode mit dem ich das ganze ausführe ist:
Java:
package sample;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import sample.entity.Message;
public class PopulateMessages {
public static void main(String[] args) {
Configuration config = new Configuration();
// config.addClass(sample.entity.Message.class);
// config.setProperties(System.getProperties());
SessionFactory factory = config.configure().buildSessionFactory();
Session session = factory.openSession();
session.beginTransaction();
Message m1 = new Message("Nachricht mit Hibernate gespeichert am " + new Date());
session.save(m1);
session.getTransaction().commit();
session.close();
// nicht im Buch?!?
// factory.close();
}
}
Danke für die Hilfe!!!! Ich weiß es nicht weiter...!