java - Hibernate 使用 BigDecimal 而不是 Integer

标签 java hibernate orm db2

我不知道为什么,但 hibernate 尝试将 BigDecimal 转换为我的列之一。该列在我的 DB2 数据库中定义为 Decimal(3,0)。所以不可能有 BigDecimal。

hbm.xml

  <composite-id name="Id" class="db2.P5Id">
   ....
    <key-property name="land" type="int">
        <column name="PFIELD1" precision="3"/>
    </key-property>
    ....
 </composite-id>

当我尝试提交如下查询时

sf.createQuery("from P5 where type = 1 and land in (:cs)")
     .setParameterList("cs", cses, Hibernate.INTEGER).list()

我收到 ClassCastException。提供的集合仅具有整数值。

最佳答案

这看起来像 this thread 中讨论的“问题”建议的修复解决方法是对DB2Dialect进行子类化:

import org.hibernate.dialect.DB2Dialect;
import java.sql.Types;

public class FixedDB2Dialect extends DB2Dialect {

    public FixedDB2Dialect() {
    super();
    registerColumnType(Types.INTEGER, "decimal($p)");
    registerColumnType(Types.NUMERIC, "decimal($p,$s)");
    registerColumnType(Types.DECIMAL, "decimal($p,$s)");
    }
} 

官方补丁可能存在 Jira 问题,但我找不到它。

关于java - Hibernate 使用 BigDecimal 而不是 Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2334428/

相关文章:

java - : Action vs ActionListener?用什么比较好

java - Hibernate:@OneToOne 未在数据库中生成 "one to one"关系

java - JBoss 中的数据源绑定(bind)

java - 将查询结果映射到 Java 中的 POJO 构造函数

java - 实体属性可以被同一实体的其他属性映射吗?

来自参数的 Java 方法对象名称

java - 如何设置主 Activity 中显示的默认 fragment ?

java - 错误 : java: package org. springframework.boot 不存在

java - Hibernate 何时为 Subcriteria 创建别名?

python - Django:或与多个语句