[Seasar-user:15881] Re: Oracle での version カラムについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 9月 30日 (火) 17:00:20 JST


小林 (koichik) です.

Date:    Tue, 30 Sep 2008 16:10:38 +0900 (JST)
From:    "Kizashi Nagata" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:15880]  Oracle での version カラムについて

> Scaffold作成時に作成されたEntityでは version は
> 
>   @Version
>   public BigDecimal version;
> 
> というように、BigDecimal 型で定義されています。

おそらく,VERSION カラムの型が NUMBER に
なっていて,精度 (桁数) を指定していないのでは
ないでしょうか?

その場合,整数部の精度はデフォルトで 38 桁に
なり,Long の範囲を超えるため,Scaffold は
BigDecimal にマッピングしますが,BigDecimal は
@Version プロパティとして使うことは出来ません.

精度を明示的に指定して,Number(9) 以下なら Integer,
Number(19) 以下なら Long になり,@Version プロパティ
として扱うことが出来ます.

> 【お願い】
> BigDecimal も version の型に含めていただくことはできますでしょうか?

S2JDBC のエンティティはほぼ JPA 仕様の
サブセットなのですが,JPA 仕様で @Version に
BigDecimal は許されていないので,S2JDBC でも
対象にしていません.


カラムの精度を明示して Integer または Long の
範囲に収まるようにするか,生成されたエンティティの
version プロパティの型を Integer または Long に
変更してください.


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