最近在学习Hibernate,看到网上说这个框架是旧的也有的说有的公司是要求学的,我感觉既然是一个框架就有它存在的意义,还是应该学的,于是就开始遇到错误了。上述的错误是我打算向数据库中插入数据遇到的,具体代码如下:
Configuration configuration = new Configuration();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
People people = new People();
people.setName("账单");
people.setMoney(1000.2);
session.save(people);
session.beginTransaction().commit();
session.close();
这是完整的代码。但是就是报标题所述错误。
这是报错的完整截图。
在网上我搜的说是因为Hibernate方言设置错误,但是我是配置了的。
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
因为看到了jdbc字眼我还查了一下,发现有的网友还真遇到过,说是connection.username、connection.password、connection.driver_class、connection.url的错误但这些都没错:
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">额,请输入自己的密码</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/textone?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Hongkong</property>
这些都是没问题的,还有就是serverTimezone是必须设置的要不然会报错。我用的驱动是8.0.19版本比较高,但是当我用5.0的就算不加上serverTimezone也是可以的,这个大家也应该注意一下。
最后解决方法:
SessionFactory sessionFactory = configuration.configure().buildSessionFactory();
这句话中新加了configure()方法 就可以了,此方法会默认去查找.cfg.xml后缀文件。
文章的前半部分其实整体上对问题的解决并没多大用处,但这个是我解决标题错误的过程,可能有些啰嗦,但写这篇文章也是更好的提醒自己,更好的加深印象,大家别嫌啰嗦。
大家加油!!!