今天在學習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