2013-08-10 10 views
16

JPAを使用するシンプルなWebアプリケーションがあります。JPA utf-8文字は保持されません

BlogEntryというエンティティがあります。

新しいBlogEntryを送信すると、アプリケーションをデバッグするときにutf8文字が正しく表示されます。この行で

例えば

em.persist(entity); 

、私は例えばデバッグする場合:

entity.getTitle() 

私はsuccessfuly IDEでのUTF-8文字を見ることができます。 (GGのように、またはCC)

はまた、私のデータベースは、UTF8照合を持って、私は

しかし、JPAと、文字 "INTO ... INSERT" のように使用してSQLを使用しただけで罰金UTF-8文字を挿入することができます????

これはなぜですか?

よろしくお願いいたします。ここで

は私の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> 

答えて

37

にpersistence.xmlファイルのプロパティに文字エンコーディングを使用し

<property name="javax.persistence.jdbc.url" 
    value="jdbc:mysql://localhost:3306/blogdatabase?useUnicode=yes&amp;characterEncoding=UTF-8"/> 
+0

は以下のように、任意の特殊文字をエスケープすることを忘れないでくださいblogDatabase \?useUnicode = true \&characterEncoding = utf \ -8 \&characterSetResults = utf \ -8' – vijay

12

これはうまくそれを解決:

<property name="hibernate.connection.useUnicode" value="true" /> 
<property name="hibernate.connection.characterEncoding" value="UTF-8" /> 

編集:休止状態で4.3.1この作品:

<property name="connection.useUnicode">true</property> 
<property name="connection.characterEncoding">utf-8</property> 
14

これは春ブーツに助け: `spring.datasource.url =のJDBC \::mysqlの\:// localhostの\:3306/

spring.datasource.url=jdbc:mysql://localhost:3306/securitydb?useUnicode=yes&characterEncoding=UTF-8 
関連する問題