日期:2014-05-20  浏览次数:20827 次

初学hibernate,高手请进,指点一下。
hibernate.cfg.xml内容如下:
<?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 name="HibernateSessionFactory" >

<!-- local connection properties -->
<!-- jdbc配置代码-->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/datebaseWeb?characterEncoding=UTF-8</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<!-- property name="hibernate.connection.pool_size"></property -->

<!-- dialect for MySQL 使用指定的数据库格式的sql语句 -->
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 指定在控制台打印生成的sql语句 -->
  <property name="hibernate.show_sql">true</property>
  <!-- 指定hibernate启动的时候自动创建表结构 -->
  <property name="hibernate.hbm2ddl.auto">create</property>
  <!--要加上这一句 否则可能会遇到异常-->
  <property name="current_session_context_class">thread</property>
   
  <mapping class="com.test.hibernate.bean.Cat" />
  </session-factory>
</hibernate-configuration>

HibernateSessionFactory.java内容如下:
package com.test.hibernate;
import org.hibernate.cfg.*;
public class HibernateSessionFactory {
  //private static Configuration configuration = new Configuration();
private static Configuration configuration = new AnnotationConfiguration();
   
}
HibernateUtil.java内容如下:
package com.test.hibernate;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;;
public class HibernateUtil 
{
private static final SessionFactory sessionFactory;
static
{
try
{
sessionFactory = new AnnotationConfiguration().
configure("hibernate.cfg.xml").buildSessionFactory();

}catch(Throwable ex)
{
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);

}
}
public static SessionFactory getSessionFactory()
{
return sessionFactory;
}
}

在一个带main函数的类中测试
运行到如下行就错
Session session = HibernateUtil.getSessionFactory().openSession();

其实就是sessionFactory = new AnnotationConfiguration().
configure("hibernate.cfg.xml").buildSessionFactory();
出错。
hibernate.cfg.xml这个文件在src下面。

报错:
Initial SessionFactory creation failed.java.lang.IncompatibleClassChangeError: Implementing class
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.test.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:19)
at com.test.hibernate.CatTest.main(CatTest.java:37)
Caused by: java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)