2011-04-04 47 views
0

我想創建一個插入查詢到我的Oracle 10g數據庫。它不斷給我這個錯誤:休眠插入到oracle數據庫,意外的令牌:VALUES

錯誤解析器:33 - 1號線:115:意外的標記:數值

這是我的DAO方法插入

public void uploadFile(String createUser, Integer id, byte[] file, String name, String size, String mime) { 

    Session session = getSessionFactory().openSession(); 
    try { 
     Query up = session.createSQLQuery("INSERT INTO FILES(CREATE_DATE, CREATE_USER, FILE_DATA, FILE_ID, FILE_MIME, FILE_NAME, FILE_SIZE, ID) VALUES(SYSDATE, :createUser, :file, FILE_ID_SEQ.nextval, :mime, :name, :size, :id) "); 

     up.setInteger("id", id); 
     up.setBinary("file", file); 
     up.setString("name", name); 
     up.setString("size", size); 
     up.setString("mime", mime); 
     up.setString("createUser", createUser); 

     up.executeUpdate(); 

    } catch(HibernateException e) { 
     throw new HibernateException(e); 
    } finally { 
     session.close(); 
    } 
} 
+0

可以顯示完整的堆棧跟蹤嗎? – axtavt 2011-04-04 13:22:58

+0

只是試圖打印堆棧跟蹤,這是我得到的唯一的事情是,該錯誤 – medium 2011-04-04 13:37:08

+0

據我所知,沒有堆棧跟蹤,你甚至不能確定錯誤發生在顯示的代碼,而不是其他地方。 – axtavt 2011-04-04 13:46:10

回答

0

檢查列清單,您錯過了尺寸:

FILES(CREATE_DATE, CREATE_USER, FILE_DATA, FILE_ID,    FILE_MIME, FILE_NAME, ID) 
VALUES(SYSDATE, :createUser, :file,  FILE_ID_SEQ.nextval, :mime,  :name,  :size, :id) 
+0

對不起,這不是問題,這是我編寫問題時的一個錯字。 @Stefan Steinegger – medium 2011-04-04 13:21:50

+0

您可以打開Hibernate「show_sql」參數並在發送到服務器之前打印SQL嗎?或者從Oracle日誌打印SQL?也許從生成的語句只有一個簡單的語法問題。 – 2011-04-05 01:18:16

1

只支持INSERT INTO ... SELECT ...表單;不是INSERT INTO ... VALUES ...表單。

核心參考,第13章

UPS,對不起,這是普通的SQL,我什麼都不說。