数据库中32位的id用java查询出来是0

数据库中32位的id用java查询出来是0

【问题描述】

​ 数据库中的32位的guid查询出来是0

【原因分析】

淦,查了半天,发现建表的老哥将表的主键的类型设置成char类型。我们这边的持久层的框架用的hebinate

,hebinate了解不深,但我们猜测一波。看下面的截图,框架将数据库中的char类型的字段映射成了java中的character字段。这挠挠屁股也知道映射过来是有问题的,光是字节长度这个问题就解决不了。也就是说框架底层中new了一个新的character对象,但是没有映射成功,而且这个character对象设置的默认值是0。
在这里插入图片描述

【解决方案】

既然在持久层框架中就做了处理,那我们只能从sql语句这个方面入手了。也就是说我们在查询的时候就将char类型转成varchar类型就行了,这样数据就可以正确的显示了。select cast(a.id AS varchar2(32))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值