【 使用环境 】测试环境
【 OB or 其他组件 】OceanBase
【 使用版本 】4.2.1
【问题描述】java系统,数据库是OB,持久层框架是hibernate。一个查询sql:"select sum(clm_amt) from AMOUT where flg=‘1’ ",单独在ob里面执行返回的是包含小数的正确结果。但是java通过框架调用sql时,返回的结果是一个整数。也就是说数据库是正常的,但是传到java这边时会丢失小数。
【复现路径】尝试用Object,BigDecimal等类型接收返回的结果都出现同样问题。不使用sum函数返回的结果也是正常的。
你好,你提的这个技术问题牵涉到OceanBase企业版范围内的功能细节。针对此类问题,建议你通过以下方式寻求帮助:
1.如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;
2.如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。
https://www.oceanbase.com/contactus?fromPage=https%3A%2F%2Fwww.oceanbase.com%2Fsoftwarecenter-enterprise&dataSources=softwarecenter-enterprise_footercontact_d2022
不是企业版
刚才我看版本不是写的3.2.3么
select * from dba_ob_servers; 看下
写成生产上的了,这是测试环境
这个问题看着不像是数据库的问题,倒像是数据在返回java之后处理时丢失精度了
如果用navicat或者ODC工具查呢,会不会丢失呢
应该是持久层映射的问题。这个hibernate框架之前连接oracle时都是正常的,现在连接ob就出现上面的问题
ODC是正常的
那可能需要看下框架问题了,数据库查到的是什么,就返回的什么
我感觉OB里面sum(AA)和AA的底层已经不是同一种类型了,不知道OB对sum后的数据做了什么特殊处理