论坛首页 Java版 Hibernate

Hibernate自动建表的一个问题。

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


[code:1]<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>[/code:1]

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

[code:1]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)
)[/code:1]

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

[code:1]<property name="custid" column="CUSTID" type="big_decimal"> [/code:1]

如果把这句改成:

[code:1] <property name="custid">
<column name="CUSTID" sql-type="number" not-null="true"/>
</property>[/code:1]

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

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

跳转论坛:
JavaEye推荐