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

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

“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字段 是全部大写的,也就不用加引号了=====

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

你可能感兴趣的:(疑难问题)