2015-05-08 59 views
0

我想用Hibernate來執行mysql的插入查詢的數量Hibernate的異常位置,我有這樣的:超越宣佈序參數

String q1="INSERT INTO sample (DatasetStatusID,Message,ProcessTime) VALUES('?','?','?') "; 
Query query=session.createSQLQuery(q1); 
query.setParameter(0, 5); 
query.setParameter(1, "TESTING"); 
query.setParameter(2, new Date()); 
int result=query.executeUpdate(); 
tx.commit(); 

我有以下異常出現,在線程

異常「主「org.hibernate.QueryParameterException: 超出聲明的有序參數數目的位置。請記住, 序數參數是基於1的!您的位置:1

這裏有什麼錯?

+0

爲什麼不使用'休眠save()'方法而不是'native sql'? –

+0

我是新來的冬眠,我知道只有mysql查詢 –

+0

你映射你的pojos與數據庫表? –

回答

0

嘗試刪除周圍的查詢參數佔位符(問號)的報價。

+0

我也查參數1,2,3訂購相同的異常發生,超越宣佈序參數號位置。請記住,序號參數是基於1的!位置:2 –

+0

嘗試刪除問號周圍的引號;那樣有用嗎? – frasertweedale

+0

我檢查給定的格式,但異常發生,**字符串Q1 = 「INSERT INTO datasethistory(DatasetStatusID,消息,ProcessTime)VALUES(5, '測試',」 +新日期()+ 「)」; **無值指定參數1 –

1

如果您正在使用HIBERNATE推薦的方式來保存數據是save()HIBERNATE有數據庫operations.But某些原因,你可以使用native sql query.Saving與hibernate樣子以下的所有方法:

Session sess = factory.openSession(); 
Transaction tx; 
try { 
    tx = sess.beginTransaction(); 
    sess.save(YourPojo); 
    tx.commit(); 
} 
catch (Exception e) { 
    if (tx!=null) tx.rollback(); 
    throw e; 
} 
finally { 
    sess.close(); 
} 

推薦的Hibernate教程:
Hibernate Reference Documentation

+0

推薦的Hibernate教程:HTTPS://docs.jboss.org/hibernate/orm/3.3/reference/en/html/index.html和http:/ /www.tutorialspoint.com/hibernate/ –

+0

好的,我會檢查教程 –