Hibernate-自定义方言的BigDecimal列映射



我正在使用Hibernate作为我们的对象相关映射,并具有用于模糊数据库的自定义方言。

我从该数据库中检索的实体具有一列:

    @Column(name = "GROSS_WEIGHT", precision = 9, scale = 3)
    private BigDecimal grossWeight;

数据库的该列定义为数字,精度为9,比例为3。

我可以看到Hibernate生成以检索数据的SQL,当我使用数据库查询工具执行相同的查询时,它将返回Gross_Weight列的" 9.68"。

但是,在Hibernate检索的实体中,"少量量级"字段包含值'10',而scale为0, precision和2!

在我使用的自定义方言类中,我尝试过覆盖以下列类型:

        registerColumnType( Types.DECIMAL, "numeric($p,$s)" );
        registerColumnType( Types.DOUBLE, "numeric($p,$s)" );
        registerColumnType( Types.NUMERIC, "numeric($p,$s)" );

,但它仅返回(圆形的)整数。

这在应用程序的其他地方起作用,在该应用程序中,我们使用Postgres方言从Postgres检索对象。

任何想法我在方言中应该做什么,以便我可以找到冬眠以正确设置检索到的bigdecimal的精度/刻度?

好吧,在下载了冬眠来源后,并通过Netbeans的调试器踏上了他们,我发现问题在于专有的JDBC驾驶员ResultSet子类,而不是在Hibernate中,而不是在Hibernate。<<<<<</p>

getBigDecimal方法总是返回一个比例为0的值。

当我联系JDBC驱动程序的开发人员时,他发现了错误并修复了该错误。

最新更新