[Seasar-user:16615] S2JDBCでBigInteger型プロパティのデータを登録しようとするとエラーになる

koba168 [E-MAIL ADDRESS DELETED]
2009年 1月 7日 (水) 21:05:30 JST


小林と申します。
お世話になります。

下記のように
jdbcManager#updateBySqlFile(String path, Object parameter)
でMySQLにインサートを行おうとしましたが
EntityクラスにBigIntegerプロパティがあるとエラーになってしまいます。

[環境]
seasar 2.4.32
s2jdbc-gen 0.9.3
mysql 5.1.28

[table]
CREATE  TABLE IF NOT EXISTS `aaa` (
 `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
 `uns_big_id` BIGINT UNSIGNED NULL ,
 PRIMARY KEY (`id`) )
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin;

[java]
EntityクラスはS2JDBC-GenのGen-Entityタスクで自動生成したものです。

・Aaa.java
@Entity
public class Aaa {

   /** idプロパティ */
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(precision = 10, nullable = false, unique = true)
   public Long id;

   /** unsBigIdプロパティ */
   @Column(precision = 20, nullable = true, unique = false)
   public BigInteger unsBigId;
}

・AaaService.java
Aaa aaa = new Aaa();
aaa.unsBigId = BigInteger.ONE;
jdbcManager.updateBySqlFile("sql/insertAaa.sql", aaa).execute();

[sql]
・insertAaa.sql
INSERT INTO aaa (uns_big_id) VALUES (/*unsBigId*/)

[エラー内容]
javax.servlet.ServletException:
org.seasar.framework.exception.SQLRuntimeException:
[ESSR0072]SQLで例外(SQL=[INSERT INTO aaa (uns_big_id) VALUES (?)],
Message=[[ESSR0072]SQLで例外(SQL=[INSERT INTO aaa (uns_big_id) VALUES
(?)], Message=[0], ErrorCode=22001, SQLState={3})が発生しました :
[SQLで例外(Message=[Data truncation: Out of range value for column
'uns_big_id' at row 1], ErrorCode=0, SQLState=22001)が発生しました。], [Data
truncation: Out of range value for column 'uns_big_id' at row 1],
ErrorCode=0, SQLState=22001)が発生しました


BigIntegerプロパティのValueTypeがSerializableTypeになっておりMySQLへのインサート時にエラーが発生します。
[Seasar-user:16383]と同様にValueTypesクラスでBigInteger型の登録が漏れているようです。

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


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