[Seasar-user:9317] Re: [S2Dao] DBMSとの対応表
SETO Azusa
[E-MAIL ADDRESS DELETED]
2007年 7月 20日 (金) 17:57:28 JST
せとあずさです。
On 20 Jul 2007 16:48:43 +0900
山下 真里 <[E-MAIL ADDRESS DELETED]> wrote:
> tinyint(1) などの場合、S2Daoで取得する際に、Integerでは、
> 正しく取得できずに、tinyint(1)以外を利用しております。
>
> DBMS型が、Javaの型に対応しているかを一覧にした
> 対応表などがありますと、非常にありがたいのですが、
> そういった対応表等は、存在するのでしょうか。
>
ご質問の件についてはJDBCドライバごとに対応を調べなければ
ならないので、一覧表のような形式では存在しません。
S2Dao(S2JDBC)は値の取得時にResultSetのどのメソッドを使うかを
Beanの型から求めているのですが、Integerの場合getObject()を
使っています。
で、MySQL5.0.45+mysql-connector-java-3.1.14+WindowsXP SP2で
調べたのですが、tinyInt(1)をgetObject()するとBooleanで返して
いるので、S2Dao/S2JDBCでは1/0になってしまう、ということだと
思います。
なので、
public static class IntValueTypes extends IntegerType {
@Override
public Object getValue(ResultSet resultSet, int index)
throws SQLException {
return new Integer(resultSet.getInt(index));
}
@Override
public Object getValue(ResultSet resultSet, String columnName)
throws SQLException {
return new Integer(resultSet.getInt(columnName));
}
}
のようなValueTypeを作って、どこかのdiconに登録し、Beanの該当プロパティに
public static String (プロパティ名)_VALUE_TYPE="(ValueTypeのコンポーネント名)";
というアノテーションをつければ値を受け取れると思います。
--
せとあずさ
[E-MAIL ADDRESS DELETED]
http://www.fieldnotes.jp/d/
Seasar-user メーリングリストの案内