hibernate配置保存2位小数
类:
public class Account {private Integer accountId; //账户idprivate BigDecimal accountMoney; //账户总金额private BigDecimal accountLockMoney;//锁定金额private Date accountCreateDate; //创建时间配置文件:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.anycall.bean"> <class name="Account" table="tuan_account"> <id name="accountId" column="tuan_account_id" length="50" type="integer"> <generator column="tuan_account_money" length="200" not-null="true" type="big_decimal" scale="2"/> <property name="accountLockMoney" column="tuan_account_lock_money" length="20" not-null="true" type="big_decimal" scale="2" /> <property name="accountCreateDate" column="tuan_account_create_date" length="20" not-null="true" type="timestamp"/> <many-to-one name="person" column="tuan_account_person_id" not-null="true"/> </class></hibernate-mapping>
生成表结构为:
SQL> desc tuan_account;Name Type Nullable Default Comments ------------------------ ------------ -------- ------- -------- TUAN_ACCOUNT_ID NUMBER(10) TUAN_ACCOUNT_MONEY NUMBE(19,2) TUAN_ACCOUNT_LOCK_MONEY NUMBER(19,2) TUAN_ACCOUNT_CREATE_DATE DATE SQL>
ps:
Oracle使用标准、可变长度的内部格式来存储数字。这个内部格式精度可以高达38位。
NUMBER数据类型可以有两个限定符,如:
java对象类型是:BigDecimal 配置文件字段类型:big_decimal
precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。
scale表示数字小数点右边的位数,scale默认设置为0. 如果把scale设成负数,Oracle将把该数字取舍到小数点左边的指定位数。