[Seasar-user:16945] Re: [S2JDBC]チュートリアルをmysql対応にする方法について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 2月 18日 (水) 21:00:23 JST


小林 (koichik) です.

Date:    Wed, 18 Feb 2009 18:42:50 +0900 (JST)
From:    [E-MAIL ADDRESS DELETED]
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16943] [S2JDBC]チュートリアルをmysql対応にする方法について

> JDBCManagerの動作がうまくいかないので、S2JDBCの
> チュートリアルを使って見ているのですが、
> ユニットテストがうまく動作しません。
(略)
> /src/test/java/examples 以下のユニットテストを
> 実行したた所、
> GetCountTest.java
> SqlGetSingleResultTest.java
> 以外は下記のようなエラーが発生します。
> 
> org.seasar.framework.exception.SQLRuntimeException: [ESSR0072]SQLで例外(SQL=[], Message=[Invalid value for getInt() - 'SALESMAN'], ErrorCode=0, SQLState=S1009)が発生しました
>     at org.seasar.extension.jdbc.query.AbstractQuery.handleResultSet(AbstractQuery.java:450)
>     at org.seasar.extension.jdbc.query.AbstractSelect$6.handle(AbstractSelect.java:429)
(略)
> create table employee (
> id int,
> name varchar(255) not null,
> job_type varchar(30) not null,

チュートリアルでは job_type は enum を使って
数値型にマッピングするかのように書かれてますが,
hsql/create.sql では varchar になってますね...

src/test/data/test.script は integer になって
いるので,hsql/create.sql が古いままなのだと
思われます.

とりあえず,Employee クラスの jobType に

@Enumerated(EnumType.STRING)
public JobType jobType;

とアノテーションを指定してください.
これでエンティティ側も job_type を文字列で
扱うようになります.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内