[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 メーリングリストの案内