2013-08-01 128 views
3

具有BigDecimal且不長的實體類具有BigDecimal且不長的實體類 - 生成休眠工具

我的實體類與Hibernate工具結合在一起。不幸的是,一些'長'值變成'BigDecimal'數字(列:AGE,BIRTHDATE),但不是全部(列:ID)!

爲什麼會發生這種情況,我應該如何解決這個問題?

的表在我的Oracle數據庫:用戶

Column - Type - Decimal Digits - Column Sizes 
    ----------+----------+----------------+------------- 
    ID  - NUMBER -  0   - 10 
    AGE  - NUMBER -  0   - 38 
    BIRTHDATE - NUMBER -  0   - 38 
    FIRSTNAME - VARCHAR2 - <null>  - 32 

使用Hibernate工具生成實體類(POJO)

@Id 
@Column(name = "ID", unique = true, nullable = false, precision = 10, scale = 0) 
private long id; 

@Column(name = "AGE", precision = 38, scale = 0) 
private BigDecimal age; 

@Column(name = "BIRTHDATE", precision = 38, scale = 0) 
private BigDecimal birthdate; 

@Column(name = "FIRSTNAME", length = 32) 
private String firstname; 

謝謝!

+0

我想這是因爲你的年齡和BRITHDATE列是38列大小,最大數量'長'可以是9,223,372,036,854,775,807這是19大小。 – JavaKB

回答

4

休眠工具可以配置爲定製類型映射。 在reveng.xml中指定所有映射(請參見屏幕截圖)。 將任何JDBC類型轉換爲任何Hibernate類型並再次運行您的生成器。

reveng.xml映射配置:

reveng.xml mapping configuration

使用此reveng.xml在您的發電機:

use this reveng.xml in your generator