JPA utf-8字符没有保留

Kor*_*gay 17 jpa utf-8

我有一个简单的Web应用程序,我使用JPA.

我有一个名为BlogEntry的实体.

当我提交一个新的BlogEntry时,当我调试我的应用程序时,我看到utf8字符就好了.

例如

em.persist(entity);
Run Code Online (Sandbox Code Playgroud)

在这一行中,如果我调试例如:

entity.getTitle()
Run Code Online (Sandbox Code Playgroud)

我可以成功地在IDE中看到utf-8字符.(如ğğ,或çç)

此外,我的数据库具有UTF8排序规则,我可以使用类似"INSERT INTO ..."的sql插入utf-8字符.

但是,使用JPA时,字符会保持为????

为什么会这样?

问候.

这是我的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name="Persistence">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>com.tugay.blog.core.model.Blogentry</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/blogdatabase"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="aabbccdd"/>
        </properties>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

mut*_*mar 39

在persistence.xml文件的属性中使用字符编码

<property name="javax.persistence.jdbc.url" 
   value="jdbc:mysql://localhost:3306/blogdatabase?useUnicode=yes&amp;characterEncoding=UTF-8"/>
Run Code Online (Sandbox Code Playgroud)


ACV*_*ACV 14

这有助于Spring Boot:

spring.datasource.url=jdbc:mysql://localhost:3306/securitydb?useUnicode=yes&characterEncoding=UTF-8
Run Code Online (Sandbox Code Playgroud)


Kor*_*gay 13

这很好地解决了它:

<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
Run Code Online (Sandbox Code Playgroud)

编辑:使用hibernate 4.3.1这适用:

<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">utf-8</property>
Run Code Online (Sandbox Code Playgroud)