当前位置: 移动技术网 > IT编程>数据库>Mysql > 解决办法:Message: 对实体 "useUnicode" 的引用必须以 ';' 分隔符结尾

解决办法:Message: 对实体 "useUnicode" 的引用必须以 ';' 分隔符结尾

2019年05月09日  | 移动技术网IT编程  | 我要评论

 

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” 的引用必须以 ‘;’ 分隔符结尾,将&符号重写成:&amp;如下:

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/lvlang?" +"autoreconnect=true&amp;useunicode=true&amp;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写法有问题。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网