使用 hibernate3 从 mysql 检索 utf-8 字符串时出现问题
当我尝试从 mysql 数据库加载对象(一行)时,字符串属性未正确加载,因此当我打印它们时,没有显示任何内容。
这是我的休眠配置文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/demo_hib_1
</property>
<property name="connection.username">root</property>
<property name="connection.password"> </property>
<property name="pool_size">5</property>
<property name="show_sql">true</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- Mapping files -->
<mapping resource="com/navid/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我尝试向连接 url 添加编码:
jdbc:mysql://localhost:3306/demo_hib_1&characterEncoding=UTF-8
并得到休眠异常:
Exception in thread "main" 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 com.navid.Main.main(Main.java:31)
Caused by: org.dom4j.DocumentException: Error on line 10 of document : The reference to entity "characterEncoding" must end with the ';' delimiter. Nested exception: The reference to entity "characterEncoding" must end with the ';' delimiter.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2238)
... 3 more
When I try to load an object( a row ) from mysql database, the string properties are not loaded properly , and as a result when I print them, nothing is displayed.
here is my hibernate config file :
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/demo_hib_1
</property>
<property name="connection.username">root</property>
<property name="connection.password"> </property>
<property name="pool_size">5</property>
<property name="show_sql">true</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- Mapping files -->
<mapping resource="com/navid/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
I tryed adding encoding to connection url :
jdbc:mysql://localhost:3306/demo_hib_1&characterEncoding=UTF-8
and got hibernate exception :
Exception in thread "main" 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 com.navid.Main.main(Main.java:31)
Caused by: org.dom4j.DocumentException: Error on line 10 of document : The reference to entity "characterEncoding" must end with the ';' delimiter. Nested exception: The reference to entity "characterEncoding" must end with the ';' delimiter.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2238)
... 3 more
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
hibernate 配置文件是一个 XML 文件,因此 raw &不允许使用符号
我想到了两个选项(但未经测试!),第一个是使用 XML
&
转义序列:或者使用名称+值语法,这不会需要 &转义:
请注意,我也添加了第二个选项,我认为您两个都需要
The hibernate config file is an XML file, so raw & symbols aren't allowed
Two options that spring to mind (but untested!), the first would be to use the XML
&
escape sequence:Or using name+value syntax, which wouldn't need the & escaping:
Note that I've added a 2nd option too, I think you need both
您是否尝试添加
到会话工厂配置。
来自 Hibernate 文档:
Did you try adding
to session factory configuration.
From Hibernate documentation: