Raj*_*hra 6 java sql oracle postgresql math
我们正在从Oracle迁移到PostgreSQL.某些特定于Oracle的查询必须更改为Postgres等效项.以下是一个这样的提交:
原来,
Query query = getEntityManager().createNativeQuery("SELECT PC_SITE_GROUP_ID_SEQ.NEXTVAL from DUAL");
BigDecimal result = (BigDecimal) query.getSingleResult();
Run Code Online (Sandbox Code Playgroud)
被改为,
Query query = getEntityManager().createNativeQuery("SELECT NEXTVAL('pc_site_group_id_seq')");
BigDecimal result = (BigDecimal) query.getSingleResult();
Run Code Online (Sandbox Code Playgroud)
在运行时,在更改之后,它会抛出错误,
java.math.BigInteger无法强制转换为java.math.BigDecimal
我的问题是它为什么以前工作?提醒一下,第一个更改是在Oracle数据库上运行,而第二个更改是在Postgres数据库上运行.请帮忙.
小智 4
Oracle 数据库中没有“整数”数据类型,因此驱动程序将所有内容映射到 BigDecimal。
在 Postgres 中,整数(或 bigint)和小数之间有明显的区别,因此驱动程序返回一个 BigIntegerbigint值。
并且序列总是发出bigint值,因此驱动程序会BigInteger为它们返回 a 。
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |