Nav*_*vid 3 java mysql database hibernate utf-8
当我尝试从mysql数据库加载一个对象(一行)时,字符串属性未正确加载,因此当我打印它们时,不会显示任何内容.
这是我的hibernate配置文件:
<?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>
Run Code Online (Sandbox Code Playgroud)
我尝试将连接url添加到编码中:
jdbc:mysql://localhost:3306/demo_hib_1&characterEncoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
并获得了hibernate异常:
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
Run Code Online (Sandbox Code Playgroud)
hibernate配置文件是一个XML文件,因此不允许使用原始和符号
想到的两个选项(但未经测试!),第一个是使用XML &转义序列:
<property name="connection.url">
jdbc:mysql://localhost:3306/demo_hib_1?useUnicode=true&characterEncoding=UTF-8
</property>
Run Code Online (Sandbox Code Playgroud)
或者使用名称+值语法,这不需要&转义:
<property name="connection.url" value="jdbc:mysql://localhost:3306/demo_hib_1?useUnicode=true&characterEncoding=UTF-8" />
Run Code Online (Sandbox Code Playgroud)
请注意,我也添加了第二个选项,我认为你需要两个选项