hibernate save数据到 oracle问题之二:could not extract ResultSet

本文详细记录了解决在使用Hibernate框架时遇到的标识符无效错误的过程,通过对比数据库字段与实体类字段,发现大小写不一致及字段命名问题,最终修改数据库字段为大写,成功解决错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接上一条,又出一问题,报错:

“could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet”  标识符无效

对于 could not extract ResultSet 可能是  表与字段对应不上  的原因。

而对于 标识符 无效,

真的是搞死了呀。

一直找不到原因,为什么会报标识符无效,我检查了很多次,数据库里的字段跟bean实体里面的字段一模一样一一对应上的,但还是不知道为什么会有这样的问题。

后来,我把 hibernate的 sql 语句打印到了控制台,然后拿着hql去数据库里面执行,结果发现,也是报错,标识符无效----

然后我在 数据库 里面 手写 sql 语句,发现,select t.a from table t 这里面的a,自动被加上了 引号,

SELECT t."Adult_Qty" FROM ABC_TEST t 数据库表的字段是驼峰命名

而hibernate打印出来的sql语句里面 字段 是 没有加引号的,那要怎么办呢?

最后才明白,原来 oracle 数据库 表 中的字段,全部都要是 大写的。问同事,同事说,oracle 不区分大小写的,都是默认大写的,看不出来是大写还是小写, 我就不是很明白了。本来这个表 是我建的 mysql 数据库,然后直接复制到了 oracle 中,我后来才反应过来,好像我在粘贴的时候,oracle里面好像确实自动转换成了 大写,额,,,,,只是我把那个表给删了,因为我bean里面的是驼峰命名法,我为了和数据库表示一样,所以留了我在mysql 里面建的表,oh,my god.

真的是被搞死了,最后把 表 里面的字段全部改成了大写,然后再去测试一下,ok了。

再在数据库里面执行个 sql 语句,select t.a from table t  这个时候的 a字段 是全部大写的,也就不用加引号了=====

可能真的就是 大小写 的问题 导致 标识符无效===

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值