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 {
@Test
public 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();
}
}
解决办法:
1、在Hibernate.cfg.xml中加入c3p0连接池配置,由于此方法配置c3p0的属性较少,建议使用方法2;
2、在applicationContext.xml中的sessionFactory Bean中引入<property name="dataSource" ref="dataSource"></property> c3p0的Bean引用,使用时必须通过ApplicationContext的getBean()方法,才能创建sessionFactory实例;