今天在学习Hibernate、在配置的过程报了一个以下的错误、java
org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not setsession
仔细检查了一下、也没发现有什么错、配置也都是参照官方文档写的、app
后来在网上查了一下、说是Hibernate 4.X以后废弃了原来的buildSessionFactory方法、改成最新的后、就能够正常运行了、代码以下、学习
错误的代码:ui
Familly f = new Familly(); f.setFamilyid(1); f.setSex("1"); f.setCifname("杨"); f.setRelname("军"); Configuration cfg = new Configuration(); SessionFactory sessionFactory = cfg.configure().buildSessionFactory(new StandardServiceRegistryBuilder().build()); Session session = sessionFactory.openSession(); session.beginTransaction(); session.save(f); session.getTransaction().commit(); session.close(); sessionFactory.close();
修改后的正确代码:hibernate
Familly f = new Familly(); f.setFamilyid(1); f.setSex("1"); f.setCifname("杨"); f.setRelname("军"); Configuration cfg = new Configuration().configure(); StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySettings(cfg.getProperties()).build(); SessionFactory sessionFactory = cfg.buildSessionFactory(serviceRegistry); /* 废弃一下 Configuration cfg = new Configuration(); SessionFactory sessionFactory = cfg.configure().buildSessionFactory(new StandardServiceRegistryBuilder().build()); */ Session session = sessionFactory.openSession(); session.beginTransaction(); session.save(f); session.getTransaction().commit(); session.close(); sessionFactory.close();
打印生成的SQL以下:blog
Hibernate: insert into CR_FAMILY (cifname, relname, sex, familyid) values (?, ?, ?, ?)ci