我正在尝试将测试数据库从 Oracle 迁移到 HSQLDB。在 Oracle 中,我有类型为 NUMERIC (x,0) 的字段。据我所知,与 BigDecimal java 类型相关的 NUMERIC 类型。当我运行测试并尝试在数据库中保存记录时,出现以下错误:
Caused by: java.sql.SQLException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigDecimal java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigDecimal
如果我将类型从 NUMERIC(x,0) 更改为 INTEGER,则它可以正常工作。但 INTEGER 类型不支持 HSQLDB 中的精度和小数位数。
有没有办法解决这个问题?
更新:
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source)
at org.javalite.activejdbc.DB.execInsert(DB.java:521)
at org.javalite.activejdbc.Model.insert(Model.java:2096)
at org.javalite.activejdbc.Model.save(Model.java:2008)
at org.javalite.activejdbc.Model.saveIt(Model.java:1935)
at org.javalite.activejdbc.Model.createIt(Model.java:1625)
Caused by: java.sql.SQLException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigDecimal java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigDecimal
... 41 more
我正在使用 ActiveJDBC
public class Employee extends Model {...}
Employee e = (Employee) Employee.createIt("e_type", 1, "name", "Employee")