HibernateでBigDecimalの精度を指定
HibernateでBigDecimalのプロパティをマッピングしていてはまりました。
(Xdocletを使用。RDBはMySQL)
としていると、スキーマ生成時に
/**
* @hibernate.property
* column="DECIMAL_VALUE"
*/
public BigDecimal getDecimalValue() {
...
というDDLをはいてしまい、結果的に
DECIMAL_VALUE NUMERIC(31,255),
という定義の列ができてしまう。
DECIMAL_VALUE DECIMAL(31,30)
これを
とすると、期待通り
/**
* @hibernate.property
* @hibernate.column
* name="DECIMAL_VALUE"
* sql_type="NUMELIC(10,2)"
*/
public BigDecimal getDecimalValue() {
...
という列ができました。ただし、sql_type...というところはRDB製品に依存するようですが。
DECIMAL_VALUE DECIMAL(10,2)