论坛首页 Java企业应用论坛

Hibernate自动建表的一个问题。

浏览 10952 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-09-18  
我有一个OrderBase表,hbm定义如下:


<hibernate-mapping>

    <class name="OrderBase" table="L_ORDERBASE" dynamic-update="true">

        <id name="id" type="string" unsaved-value="null" >
            <column name="ORDERID" sql-type="varchar2(32);" not-null="true"/>
            <generator class="uuid.hex"/>
        </id>

        <property name="name">
            <column name="NAME" sql-type="varchar2(30);" not-null="true"/>
        </property>

        <property name="type">
            <column name="TYPE" sql-type="varchar2(20);" not-null="false"/>
        </property>

        <property name="custid" column="CUSTID" type="big_decimal">

	</property>

    </class>

</hibernate-mapping>


但是Hibernate在生成建表的DDL的时候生成的是:

drop table L_ORDERBASE cascade constraints
create table L_ORDERBASE (
   ORDERID varchar2(32); not null,
   NAME varchar2(30); not null,
   TYPE varchar2(20);,
   CUSTID NUMBER(19, 255);,
   primary key (ORDERID);
);


由于CUSTID为NUMBER的类型,生成的CUSTID定义为NUMBER(19,255)精度超过了数据库精度标准(255)。所以建表就失败了。
请问大家遇到Java的big_decimal类型是如何处理的?
   发表时间:2003-09-18  
顺便说一句,从class2hbm生成的属性定义都是如下的样子:

<property name="custid" column="CUSTID" type="big_decimal"> 


如果把这句改成:

        <property name="custid">
            <column name="CUSTID" sql-type="number" not-null="true"/>
        </property>


Hibernate自动建表就没有任何问题了。但是我不想做这个手工转换的工作。毕竟我的所有的表都是从class生成的。这样的话岂不太麻烦了。
请各位牛牛支招。
0 请登录后投票
   发表时间:2003-10-16  
我也遇到相同的问题,有没有什么好办法?
0 请登录后投票
   发表时间:2004-03-12  
yes
0 请登录后投票
   发表时间:2004-05-18  
关注,我也遇到同样的问题

而且:
  在配置文件的property中什麽情况下写 sql-type 什麽情况下写type呢?
0 请登录后投票
   发表时间:2004-05-22  
if is BigDecimal 加一个 length=4  指定小数位数
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics