解决办法:Message: 对实体 "useUnicode" 的引用必须以 ';' 分隔符结尾
hibernate 5.3.1
info: hhh000206: hibernate.properties not found
exception in thread "main" org.hibernate.internal.util.config.configurationexception: unable to perform unmarshalling at line number 0 and column 0 in resource hibernate.cfg.xml. message: null
at org.hibernate.boot.cfgxml.internal.jaxbcfgprocessor.unmarshal(jaxbcfgprocessor.java:133)
at org.hibernate.boot.cfgxml.internal.jaxbcfgprocessor.unmarshal(jaxbcfgprocessor.java:65)
at org.hibernate.boot.cfgxml.internal.configloader.loadconfigxmlresource(configloader.java:57)
at org.hibernate.boot.registry.standardserviceregistrybuilder.configure(standardserviceregistrybuilder.java:165)
at org.hibernate.cfg.configuration.configure(configuration.java:258)
at org.hibernate.cfg.configuration.configure(configuration.java:244)
at test.service.savemodify(service.java:34)
at test.app.main(app.java:15)
caused by: javax.xml.bind.unmarshalexception
- with linked exception:
[javax.xml.stream.xmlstreamexception: parseerror at [row,col]:[8,113]
message: 对实体 "useunicode" 的引用必须以 ';' 分隔符结尾。]
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.unmarshallerimpl.handlestreamexception(unmarshallerimpl.java:470)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.unmarshallerimpl.unmarshal0(unmarshallerimpl.java:448)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.unmarshallerimpl.unmarshal(unmarshallerimpl.java:420)
at org.hibernate.boot.cfgxml.internal.jaxbcfgprocessor.unmarshal(jaxbcfgprocessor.java:126)
... 7 more
caused by: javax.xml.stream.xmlstreamexception: parseerror at [row,col]:[8,113]
message: 对实体 "useunicode" 的引用必须以 ';' 分隔符结尾。
at com.sun.org.apache.xerces.internal.impl.xmlstreamreaderimpl.next(xmlstreamreaderimpl.java:596)
at com.sun.xml.internal.stream.xmleventreaderimpl.peek(xmleventreaderimpl.java:276)
at javax.xml.stream.util.eventreaderdelegate.peek(eventreaderdelegate.java:104)
at org.hibernate.boot.cfgxml.internal.jaxbcfgprocessor$namespaceaddingeventreader.peek(jaxbcfgprocessor.java:254)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.staxeventconnector.handlecharacters(staxeventconnector.java:164)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.staxeventconnector.bridge(staxeventconnector.java:126)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.unmarshallerimpl.unmarshal0(unmarshallerimpl.java:445)
... 9 more:
原因: <property name="hibernate.connection.url">
标签内容格式有误:
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/lvlang?" +"autoreconnect=true&useunicode=true&characterencoding=utf-8</property>
后参考对实体 “characterencoding” 的引用必须以 ‘;’ 分隔符结尾,将&
符号重写成:&
如下:
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/lvlang?" +"autoreconnect=true&useunicode=true&characterencoding=utf-8</property>
如是问题解决。
其实根据异常提示–“message: 对实体 “useunicode” 的引用必须以 ‘;’ 分隔符结尾”,也知道应该是useunicode
附近写的有问题。
前半截异常提示,容易误导人以为是配置文件或者标签名的问题:
info: hhh000206: hibernate.properties not found
exception in thread "main" org.hibernate.internal.util.config.configurationexception: unable to perform unmarshalling at line number 0 and column 0 in resource hibernate.cfg.xml. message: null
其实真正的问题出在caused by
后面:
caused by: javax.xml.stream.xmlstreamexception: parseerror at [row,col]:[8,113]
message: 对实体 "useunicode" 的引用必须以 ';' 分隔符结尾。
at
另外,eclipse 对于 xml 文件的错误提示,实在不友好,如上错误的 xml 写法,eclipse 的错误提示是the word 'localhost' is not correctly spelled + the word 'lvlang' is not correctly spelled,误导人以为是localhost或者lvlang写法有问题。
推荐阅读
-
Java 解决:SAXParseException,对实体 “serverTimezone“ 的引用必须以 ‘;‘ 分隔符结尾
-
对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾
-
解决办法:Message: 对实体 "useUnicode" 的引用必须以 ';' 分隔符结尾
-
转载 url问题:对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾
-
转载 url问题:对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾
-
解决办法:Message: 对实体 "useUnicode" 的引用必须以 ';' 分隔符结尾
-
Java 解决:SAXParseException,对实体 “serverTimezone“ 的引用必须以 ‘;‘ 分隔符结尾