Dun*_*ear 9 java hibernate jpa bigdecimal hibernate-mapping
我正在使用Hibernate作为我们的对象关系映射,使用一个隐藏数据库的自定义方言.
我从这个数据库中检索的实体有一列:
@Column(name = "GROSS_WEIGHT", precision = 9, scale = 3)
private BigDecimal grossWeight;
Run Code Online (Sandbox Code Playgroud)
数据库将此列定义为数字,精度为9,标度为3.
我可以看到Hibernate生成的SQL来检索数据,当我使用数据库查询工具执行相同的Query时,它会返回GROSS_WEIGHT列的"9.68".
但是,在由Hibernate检索的实体中,'grossWeight'字段包含值'10',其中scale0和precision2 为0 !
在我正在使用的自定义方言类中,我尝试重写以下列类型:
registerColumnType( Types.DECIMAL, "numeric($p,$s)" );
registerColumnType( Types.DOUBLE, "numeric($p,$s)" );
registerColumnType( Types.NUMERIC, "numeric($p,$s)" );
Run Code Online (Sandbox Code Playgroud)
但它仍然只返回(舍入的)整数.
这在我们使用Postgres方言从Postgres检索对象的应用程序的其他地方有效.
知道我应该在方言中做什么,所以我可以让Hibernate正确设置检索到的BigDecimal的精度/比例?
Dun*_*ear 11
好的,在下载了Hibernate源代码并在NetBeans中使用调试器逐步执行它们后,我发现问题出在专有的JDBC驱动程序的ResultSet子类中,而不是在Hibernate中.
该getBigDecimal方法始终返回一个标度为0的值.
当我联系JDBC驱动程序的开发人员时,他发现了bug并修复了它.
| 归档时间: |
|
| 查看次数: |
4638 次 |
| 最近记录: |