2017-04-01 75 views
1

我正在閱讀來自文本文件的查詢,並依賴於來自UI的過濾器,使用字符串緩衝區我附加了額外的查詢。 Passing multiple fields like this。傳遞多個ID的像上面獲取數據傳遞多個值。獲取org.hibernate.exception.SQLGrammarException:無法提取ResultSet]的根本原因

我得到嵌套的例外是javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:無法提取的ResultSet]與根源 java.sql.SQLSyntaxErrorException:ORA -01722:無效號碼。

我正在使用q.setParameter這是Java持久性查詢。所以我沒有paramterList.Because之間的逗號值我收到無效號碼。你能幫我一下,我可以在這裏做什麼來支持多個值,並可以獲取數據。

我的代碼示例:

StringBuffer q = new StringBuffer(); 

q.append(queryFromPropertiesFile); 

if(model.getId()!=null && ! model.getId().isEmpty()) 
q.append(" and emp.id IN (:id)"); 

Query query = entity.createNativeQuery(q.toString()); 

query.setParameter("id", model.getId()); 
+0

請參閱 http://stackoverflow.com/questions/14296234/how-to-use-the-setparameterlist-method-in-hibernate – coolesh

+0

謝謝,但我想用Java.per sistence.Query不是org.hibernate.query.Query。 org.hibernate.query.Query有setParameterList。 – VBR

回答

1

你需要傳遞一個List對象(即拆分使用,分隔符的字符串),然後通過IDS(List對象),將setParameter的該列表如下圖所示:

List<String> idsList = new ArrayList<>(); 
String[] ids = model.getId().split(","); 
for(String id : ids) { 
    idsList.add(id); 
} 

query.setParameterList("id", idsList); 
+0

更新了我的代碼。請再檢查一次,謝謝 – VBR

+0

看看上面的代碼,傳遞一個'List'對象 – developer

+0

其實我想用setParameter,而不是setParameterList。請指教 – VBR

相關問題