DistinctResultList в OpenJPA

Я пытаюсь получить отдельный список идентификаторов, который будет длинным... Но я возвращаю этот 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"

1 ответ

Решение

Измените ваш запрос на:

@NamedQuery(name="getProvidersByResourceIds", 
    query = "SELECT DISTINCT p.resourceId FROM Provider p WHERE p.resourceId in (:resourceIds)");
Другие вопросы по тегам