0

私はIDの個別のリストを取得しようとしていますが、これは長いものです...しかし、私はこのDistinctResultListを取得しています...彼らが期待している結果を返すためにこれをどのように処理できますか...これが私ですやっている...

@NamedQuery(name="getProvidersByResourceIds", query = "SELECT DISTINCT p.resourceId FROM Provider p WHERE p.resourceId `in :resourceIds")`

その中から、これを実行してresourceIdsを取得しようとします...

List<Long> provIDs = (List<Long>) emf.createNamedQuery("getProvidersByResourceIds").setParameter("resourceIds", values).getResultList();

しかし、私が言ったように、私は DistinctResultList を返し続けています... デバッガーを通して見ると、返されている値を見ることができます。これを便利なものに変換するにはどうすればよいですか?

javax.ejb.EJBException: See nested exception; nested exception is: java.lang.IllegalArgumentException: Parameter "Parameter<long>('resourceIds')" declared in "SELECT p FROM Provider p WHERE p.resourceId = :resourceIds" is set to value of "org.apache.openjpa.kernel.DistinctResultList@35fb35fb" of type "org.apache.openjpa.kernel.DistinctResultList", but this parameter is bound to a field of type "long".
java.lang.IllegalArgumentException: Parameter "Parameter<long>('resourceIds')" declared in "SELECT p FROM Provider p WHERE p.resourceId = :resourceIds" is set to value of "org.apache.openjpa.kernel.DistinctResultList@35fb35fb" of type "org.apache.openjpa.kernel.DistinctResultList", but this parameter is bound to a field of type "long"
4

1 に答える 1

1

クエリを次のように変更します。

@NamedQuery(name="getProvidersByResourceIds", 
    query = "SELECT DISTINCT p.resourceId FROM Provider p WHERE p.resourceId in (:resourceIds)");
于 2012-06-26T12:35:07.763 に答える