2015-10-19 67 views
0

在Hibernate中,我試圖通過設置列表中的多個值並同時執行它來執行查詢。下面是代碼Hibernate查詢批量操作異常

public void savePriority(List<Integer> priorities,int typeid) { 
    String sql="update table conf_sr_type_baserule_assoc set n_priority=:priority where n_typeid=:typeid"; 
    /*System.out.println("sql query in savePriority"+sql);*/ 
    Session session=sessionFactory.openSession(); 
    Transaction tx=session.beginTransaction(); 
    SQLQuery squery=session.createSQLQuery(sql); 
    tx.begin(); 
    for(int priority:priorities){ 
     squery.setParameter("priority", priority); 
     squery.setParameter("typeid", typeid); 
     squery.executeUpdate(); 
    } 
    tx.commit(); 
    session.close();  
} 

但我得到一個錯誤:

org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query

+0

啊...查詢錯誤。非常感謝 – jcool

+0

你試圖傳入「savePriority(列表優先級,int typeid)」的輸入類型是否可以給我示例 –

+0

在提交之前使用getTransacton()並將你的sql查詢語法更改爲回答的語法 –

回答

1

的問題來自於您的SQL查詢,這是無效的。

它應該是:的

update conf_sr_type_baserule_assoc set n_priority=:priority where n_typeid=:typeid 

代替

​​