在配置hibernate的过程中弹出了下面的报错,我的解决之法。
Initial SessionFactory creation
failed.org.hibernate.HibernateException: Could not parse
configuration: /hibernate.cfg.xml Exception in thread “main”
java.lang.ExceptionInInitializerError at
util.HibernateUtil.buildSessionFactory(HibernateUtil.java:17) at
util.HibernateUtil.(HibernateUtil.java:8) at
logic.TeacherManager.addTeacher(TeacherManager.java:12) at
logic.TeacherManager.main(TeacherManager.java:31) Caused by:
org.hibernate.HibernateException: Could not parse configuration:
/hibernate.cfg.xml at
org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2246)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2158)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2137)
at util.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
因为第一次配置不熟练,这个错误一出来的时候,我就上网搜索,有几个解决方法,但是对我没用,我于是被迫看代码解决了,还是自己看代码不仔细,听我慢慢道来。
一、
我是搜索Could not parse configuration: /hibernate.cfg.xml
解决办法:
将hibernate.cfg.xml中的xml头部
< !DOCTYPE hibernate-configuration PUBLIC
“-//Hibernate/Hibernate Configuration DTD 3.0//EN”
“http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd”>
改为:
< !DOCTYPE hibernate-configuration PUBLIC
“-//Hibernate/Hibernate Configuration DTD 3.0//EN”
“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>
我马上一看发现我的代码就是改了之后的代码[ “http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”],也就是说这个办法对我没用
二、
搜索无门,看到控制台还出现下面这个,看不下去,马上解决
Mon May 25 21:34:52 CST 2020 WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
在hibernate.cfg.xml中写
<property name="hibernate.connection.url">jdbc:mysql://localhost/salary?characterEncoding=UTF-8&useSSL=false</property>
再运行:有提示,必须以分号结尾
好,再改代码
<property name="hibernate.connection.url">jdbc:mysql://localhost/salary?characterEncoding=UTF-8&useSSL=false;</property>
改完后还出现:
再看了下这句代码:发现xml里面的&,要写成这样& amp;
改代码:
<property name="hibernate.connection.url">jdbc:mysql://localhost/salary?characterEncoding=UTF-8&useSSL=false;</property>
然后发现出现了这个提示:
The connection property ‘useSSL’ only accepts values of the form:‘true’, ‘false’, ‘yes’ or ‘no’. The value ‘false;’ is not in this set.
也就是说useSSL仅仅只接受true,false,yes,no,你新白写的是useSSL=false;这就是有问题的啊
那好吧,再改:
<property name="hibernate.connection.url">jdbc:mysql://localhost/salary?characterEncoding=UTF-8&useSSL=false</property>
运行:
解决了,发现还蛮有趣的啊,这个解决报错不要急躁,更不要捶桌子砸电脑(狗头保命)
慢慢根据下面提示来解决,读自己的代码,于是eclipse:
接着解决,看上面的could not insert 不能插入,估计是我的*.hbm.xml配置有问题:
看到了这个,可是题目要求是直接插入tno(老师id),不需要自动增加,太粗心了,删掉。
【注意】:在MySQL中也就不要勾上了。
运行:
不能更新?,马上看MySQL的表
再看自己插入的
原来有了一条记录tno=5,设置的tno为主键也就是具有唯一性,所以不能插入了。
再插入tno=10005,运行
成功,看MySQL的表中,也插入成功了。
虽然说没有解决难得bug,从几个小的报错一步步分析开始,慢慢习惯,解决完发现还蛮有趣的。点赞关注,成为朋友,还会分享一些其他的知识。