初学hibernate,高手请进,指点一下。

princesshan 2011-11-08 05:01:01
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)
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 com.test.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:11)
... 1 more
...全文
169 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
AndsionLee 2011-11-09
1.你是用否是用的DB Browser 配置的数据库连接? 如果不是,那么用DB Browser配置并测试,排除数据连接这一块的问题。
2.如果hibernate.cfg.xml是默认配置的话,它就是在src目录下。那么不用configure("hibernate.cfg.xml").buildSessionFactory();直接sessionFactory = new AnnotationConfiguration().
configure().buildSessionFactory();
3.其它的还没看。。。
回复
chenzhi306721 2011-11-09
sessionFactory = new AnnotationConfiguration().
configure("hibernate.cfg.xml").buildSessionFactory();
改为
sessionFactory = new AnnotationConfiguration().
configure().buildSessionFactory();
试试 我记得用标签的好像是这样写就可以了
回复
princesshan 2011-11-09
没有人会吗?
回复
princesshan 2011-11-09
[Quote=引用 2 楼 zzu_sun 的回复:]
jdbc:mysql://localhost:3306后面是不是要跟数据库啊
[/Quote]
跟了呀,databaseWeb就是数据库名。
回复
孟祥月 2011-11-09
我是低手 就来看看
回复
xiejin90314 2011-11-09
不清楚,看楼下回答
回复
小卜兔 2011-11-09
这样行不??



Configuration conf = new Configuration();
conf.configure();
SessionFactory sessionFactory = conf.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

session.createQuery("from xxx").list();

tx.commit();
session.close();
sessionFactory.close();
回复
看着奢扣 2011-11-08
没看出问题
回复
zzu_sun 2011-11-08
jdbc:mysql://localhost:3306后面是不是要跟数据库啊
回复
princesshan 2011-11-08
Cat类采用了标注的方式。
回复
相关推荐
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2011-11-08 05:01
社区公告
暂无公告