浏览 5344 次
|
锁定老贴子 主题:Hibernate自动建表的一个问题。
该帖已经被评为精华帖
|
|
|---|---|
| 作者 | 正文 |
|
时间: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类型是如何处理的? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间: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生成的。这样的话岂不太麻烦了。 请各位牛牛支招。 |
|
| 返回顶楼 | |
|
时间:2003-10-16
我也遇到相同的问题,有没有什么好办法?
|
|
| 返回顶楼 | |
|
时间:2004-03-12
[code:1]yes[/code:1]
|
|
| 返回顶楼 | |
|
时间:2004-05-18
关注,我也遇到同样的问题
而且: 在配置文件的property中什麽情况下写 sql-type 什麽情况下写type呢? |
|
| 返回顶楼 | |
|
时间:2004-05-22
if is BigDecimal 加一个 length=4 指定小数位数
|
|
| 返回顶楼 | |








