網頁

2013年9月23日 星期一

Hibernate學習筆記 - Error for: id numeric(19,2) identity not null

在用ant執行hbm2ddl來建table時,出現個問題,id的type設成big_integer,sql產生出一段底下的sql

id numeric(19,2) identity not null

本以為export出sql且ant回應build success是ok的,但發現table根本沒有create,將sql整個執行過後發現,sybase(可能其他DB也是有)要求numeric(19,0)才能正常運作,我針對id的宣告如下:

<id name="id" column="id" type="big_integer">
    <meta attribute="field-description">xxx</meta>
    <meta attribute="use-in-tostring">true</meta>
    <meta attribute="use-in-equals">true</meta>
    <generator class="native" />
</id>


想說就直接加成這樣,將precision設成10,scale設成0

<id name="id" type="big_integer">
    <column name="id" precision="10" scale="0" />
    <meta attribute="field-description">xxx</meta>
    <meta attribute="use-in-tostring">true</meta>
    <meta attribute="use-in-equals">true</meta>
    <generator class="native" />
</id>


但~ 不能用,找了很久的資料都找不到,結果跟generator一樣,是順序問題,如下設定就好了

<id name="id" type="big_integer">
    <meta attribute="field-description">xxx</meta>
    <meta attribute="use-in-tostring">true</meta>
    <meta attribute="use-in-equals">true</meta>
    <column name="id" precision="10" scale="0" />
    <generator class="native" />
</id>


參考網址:
Chapter 5. Basic O/R Mapping
Re: want to force scale=0 attr in hbm for BigInteger

沒有留言:

張貼留言