0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【質問】Spring MVC(JPA使用)で初期データ入れ込み時の文字化け対応方法

Last updated at Posted at 2015-11-19

現在、Spring MVCを使用したシステム開発を行っています。
JPAを使用し、初期データを入れ込むときに、文字化けが起こります。
解決方法について教えていただけると助かります。

詳細は以下の通りです。

【システム構成】
OS・・・Windows7 Professional
Java・・・1.8.0.66
開発環境・・・STS3.4.0
フレームワーク・・・Spring MVC
使用DB・・・HSQLDB2.2.9(オンメモリ)
設定文字コード・・・UTF-8

【状況】
●Spring MVCを起動するときにスクリプト(insert文)を読み込み、HSQLDB(オンメモリ)に登録する
●テーブル登録にSQL文は使用せず、エンティティクラスを定義する形にする
●Hibernate JPAを使用し、設定はpersistence.xmlに記述している
 ※hibernate.hbm2ddl.import_filesで設定

【出来ていること】
●エンティティクラスの定義に従い、HSQLDBにテーブルが作成される
●スクリプトを読み込み、テーブルにデータがinsertされる
●プログラムから登録した場合、日本語でも文字化けせず登録できる

【問題点】
●スクリプトで登録する場合、日本語が混じっていると文字化けする
<例>
<入れたいデータ>
prod_class_code・・・A
prod_class_name・・・パソコン
upd_username  ・・・admin
reg_datetime  ・・・2015-11-19 12:23:01.511
upd_datetime  ・・・2015-11-19 12:23:01.511

<格納結果>
prod_class_code・・・A
prod_class_name・・・繝代た繧ウ繝ウ
upd_username  ・・・admin
reg_datetime  ・・・2015-11-19 12:23:01.511
upd_datetime  ・・・2015-11-19 12:23:01.511

【関係するファイル】
●persistence.xml

<persistence-unit name="persistenceUnit"
	transaction-type="RESOURCE_LOCAL">
	<provider>org.hibernate.ejb.HibernatePersistence</provider>
	<properties>
		<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
		<property name="hibernate.hbm2ddl.auto" value="create-drop" />
		<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbc.JDBCDriver" />
		<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:mydata" />
		<property name="hibernate.hbm2ddl.import_files" value="sql/load.sql" />
	</properties>
</persistence-unit>

●スクリプト
 src/resources/sql/load.sql

INSERT INTO M_product_class (prod_class_code, prod_class_name, upd_username, reg_datetime, upd_datetime) VALUES ('A', 'パソコン', 'admin', now(), now());

●エンティティクラス
package entity;

import java.sql.Timestamp;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class M_product_class {
@Id
private String prod_class_code;
private String prod_class_name;
private String upd_username;
private Timestamp reg_datetime;
private Timestamp upd_datetime;

    /* アクセサメソッドは省略 */

}

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?