1. 程式人生 > >hibernate save資料到 oracle問題之二:could not extract ResultSet

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,自動被加上了 引號,而hibernate打印出來的sql語句裡面 欄位 是 沒有加引號的,那要怎麼辦呢?

最後才明白,原來 oracle 資料庫 表 中的欄位,全部都要是 大寫的。問同事,同事說,oracle 不區分大小寫的,都是預設大寫的,看不出來是大寫還是小寫, 我就不是很明白了。本來這個表 是我建的 mysql 資料庫,然後直接複製到了 oracle 中,我後來才反應過來,好像我在貼上的時候,oracle裡面好像確實自動轉換成了 大寫,額,,,,,只是我把那個表給刪了,因為我bean裡面的是駝峰命名法,我為了和資料庫表示一樣,所以留了我在mysql 裡面建的表,oh,my god.

真的是被搞死了,最後把 表 裡面的欄位全部改成了大寫,然後再去測試一下,ok了。

再在資料庫裡面執行個 sql 語句,select t.a from table t  這個時候的 a欄位 是全部大寫的,也就不用加引號了=====

可能真的就是 大小寫 的問題 導致 識別符號無效===