【发布时间】:2008-12-30 02:42:03
【问题描述】:
我有一个休眠映射如下:
<hibernate-mapping>
<class name="kochman.elie.data.types.InvoiceTVO" table="INVOICE">
<id name="id" column="ID">
<generator class="increment"/>
</id>
<property name="date" column="INVOICE_DATE"/>
<property name="customerId" column="CUSTOMER_ID"/>
<property name="schoolId" column="SCHOOL_ID"/>
<property name="bookFee" column="BOOK_FEE"/>
<property name="adminFee" column="ADMIN_FEE"/>
<property name="totalFee" column="TOTAL_FEE"/>
</class>
</hibernate-mapping>
InvoiceTVO 的变量定义为:
private int id;
private Date date;
private int customerId;
private int schoolId;
private float bookFee;
private float adminFee;
private float totalFee;
当我在此表上执行插入操作时,出现以下错误:
Hibernate: insert into INVOICE (INVOICE_DATE, CUSTOMER_ID, SCHOOL_ID, BOOK_FEE, ADMIN_FEE, TOTAL_FEE, ID) values (?, ?, ?, ?, ?, ?, ?)
50156 [AWT-EventQueue-0] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 22001
50156 [AWT-EventQueue-0] ERROR org.hibernate.util.JDBCExceptionReporter - Data truncation: Data truncated for column 'ADMIN_FEE' at row 1
50156 [AWT-EventQueue-0] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
我尝试将 adminFee 的类型更改为 double,但也没有用。问题是,Hibernate 实际上确实正确地执行了插入,并且未来的选择语句可以返回当前的值集,但是这个错误阻止了我对这张发票进行进一步的处理。
字段 bookFee、adminFee 和 totalFee 都应该是货币。它们在 MySQL 数据库中定义为十进制(5,2)。
对于如何解决此问题的任何帮助将不胜感激。
【问题讨论】:
-
首先配置hibernate来显示实际的SQL查询。那会很有帮助。
-
你是把它们定义为十进制 5,2 还是这个 Hibernate 做的?
-
我做了,但是我继承了大部分数据,所以没有太多选择。
-
那是“实际的 SQL 查询”,我将 Hibernate 设置为显示查询。据我所知,没有办法显示它实际使用的值。