Hibernate配置常见问题汇总

来源:互联网 发布:有赞源码下载 编辑:程序博客网 时间:2024/05/16 18:36
1、Unkown Entity的非常规现象

找不到实体类,我们会先检查映射文件和cfg.xml是否配置成功,检查后发现都没有问题,经过反复测试:

发现一个问题,我在同一个项目下建立了com.stephen.domain包,里面有User实体类,在另外一个包的java文件引用时,如果没有显式导入domain包,myeclipse会自动生成com.stephen.spring_hebernate.User ,竟然是项目下的User对象,然后测试session时就悲剧了,找不到实体;显式导入User所在包,问题就不存在。

2、java.lang.UnsupportedOperationException: The user must supply a JDBC connection (Spring整合Hibernate+c3p0连接池)

这个异常有多种原因导致,大致理解为没有配置好jdbc连接,做测试代码时:

public class TestHibernate {@Testpublic void test() throws Exception {SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();Session session = sessionFactory.openSession();session.beginTransaction();session.save(new User("testHibernate")); // 保存session.getTransaction().commit();session.close();}}

发现获取SessionFactory为null ,并且报出以上异常,结合查看配置文件和测试代码发现,测试代码有误,Spring整合Hibernate时,把配置信息全部写到applicationContext.xml中,但是测试代码用new Configuration().configure().buildSessionFactory(),是去读取cfg.xml来创建sessionFactory;。所以无法获取SessionFactory。谨以此博客提醒自己,加深对配置和代码的理解。

解决办法:
1、在Hibernate.cfg.xml中加入c3p0连接池配置,由于此方法配置c3p0的属性较少,建议使用方法2;

2、在applicationContext.xml中的sessionFactory Bean中引入<property name="dataSource" ref="dataSource"></property> c3p0的Bean引用,使用时必须通过ApplicationContext的getBean()方法,才能创建sessionFactory实例;




0 0
原创粉丝点击