2017-04-01 22 views
1

テキストファイルからクエリを読み込み、UIのフィルタに依存しています。追加のクエリを追加しています。 Passing multiple fields like this。私は、ネストされた例外を取得していたデータ複数の値を渡す。 org.hibernate.exception.SQLGrammarException:根本的な原因でResultSetを抽出できませんでした。

を取得するために、上記のような複数のidを渡すとjavax.persistence.PersistenceExceptionです:org.hibernate.exception.SQLGrammarException:根本原因 java.sql.SQLSyntaxErrorExceptionで] ResultSetを抽出することができませんでした:ORA -01722:無効な番号です。

私はJava永続性クエリであるq.setParameterを使用しています。だから私はparamterListを持っていません。値の間にカンマのために無効な番号が表示されています。複数の値をサポートするために私がここでできることを手伝って、データを入手することができますか?

私のコードサンプル:あなたはListオブジェクトを渡す(すなわち、,区切り文字を使用して文字列を分割)して、以下に示すようにsetParameterにIDS(Listオブジェクト)のリストを渡す必要が

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<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、notParameterListを使用したいと思います。 – VBR

関連する問題