Hi,
ich bin Hibernate Anfänger. Benutze WebSphere (Windows) Version: 5.1.0. Hab es mit hibernate-3.0.5 und hibernate-3.0.5 zusammen mit Jdk 1.3 und Jdk1.4 versucht, bekomme bei allen Variationen die gleiche Fehlermeldung. Wollte mit Hilfe von Hibernate auf eine MYSQL Datenbank eine Tabelle faq auslesen. Findet er die hibernate.cfg.xml nicht oder kann er die Session nicht anlegen? Sobald ich mein Hibernate Java-Code ausführe bekomme ich folgende Fehlermeldung bzw. sobald ich auf die Session zugreife:
Code:
java.lang.UnsupportedClassVersionError: org/hibernate/Session (Unsupported major.minor version 48.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:133)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:319)
at java.net.URLClassLoader.access$400(URLClassLoader.java:92)
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:677)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:238)
at java.lang.ClassLoader.loadClass(ClassLoader.java:516)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:441)
at java.lang.ClassLoader.loadClass(ClassLoader.java:448)
at selfservice.hibernate.TestHibernate.listfaq(TestHibernate.java:122)
at selfservice.hibernate.TestHibernate.main(TestHibernate.java:23)
Exception in thread "main"
Dies ist der listfaq code in dem ich auf die Session zugreife:
Code:
private static void listfaq() {
System.out.println("listfaq ");
Session session = null;
Transaction tx = null;
Logger log = Logger.getLogger("TestHibernate");
try {
System.out.println("listfaq select ");
session = HibernateSessionFactory.currentSession();
tx = session.beginTransaction();
//List faqs = session.find("select * from faq");
Query query = session.createQuery("select * from faq");
//for (Iterator iter = faqs.iterator();
for (Iterator it = query.iterate(); it.hasNext();){
FAQ faq = (FAQ)it.next();
System.out.println("Id " + faq.getId() + " Frage " + faq.getFrage());
}
tx.commit();
session.close();
}
catch (HibernateException e) {
System.out.println(" listfaq Fehler ");
if (tx != null)
try {
tx.rollback();
}
catch (HibernateException e1) {
log.warn("rollback not successful");
}
if (session != null)
try {
session.close();
}
catch (HibernateException e2) {
log.warn("session close not successful");
}
}
}
Dies ist meine Session Factory:
Code:
import org.hibernate.*;
import org.hibernate.cfg.*;
import org.apache.log4j.Logger;
public class HibernateSessionFactory {
//private static Log log = Logger.getLogger(HibernateSessionFactory.class);
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal threadLocal = new ThreadLocal();
private static final Configuration cfg = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || ! session.isConnected()) {
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
sessionFactory = cfg.buildSessionFactory();
}
catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
} }
private HibernateSessionFactory() {
}
Die hibernate.cfg.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- properties -->
<property name="connection.username">root</property>
<property name="connection.url">jdbc:mysql://localhost/selfservice</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.password">admin</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- mapping files -->
<mapping resource="de/laliluna/example/Honey.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Desweiteren habe ich noch eine Java-Datei für die Getter und Setter Methoden geschrieben und eine XML-Datei fürs Mapping:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping package="selfservice">
<class name="faq" table="faq">
<id name="id" column="ID" type="java.lang.Integer">
<!-- postgre: <generator class="sequence">
<param name="sequence">honey_id_seq</param>
</generator> -->
<generator class="native"/>
</id>
<property name="frage" column="Frage" type="java.lang.String" />
<property name="antwort" column="Antwort" type="java.lang.String" />
</class>
</hibernate-mapping>
Habe leider keine Ahnung woran es hier liegt bzw. was ich falsch mache, da mir die Fehlermeldung nichts sagt.
Gruß
Micha