Собственный запрос OpenJPA, как использовать оператор IN со списком

Я использую OpenJPA 2.1 на сервере приложений WebSphere с базой данных MySQL 5.

У меня есть список дат, и я хочу использовать оператор IN для получения только записей из БД, где дата в БД также находится в списке.

List<Date> dates = new LinkedList<Date>();
dates.add(somedates);

Мой запрос выглядит так:

  List<Object> list = em
    .createNativeQuery(
        "SELECT w.date FROM week_table w WHERE w.date IN ?1")
        .setParameter(1, dates).getResultList();

Но я получаю ArgumentException: org.apache.openjpa.persistence.argumentexception указанный параметр типа не является допустимым параметром запроса

Exception in thread "main" <openjpa-2.1.1-SNAPSHOT-r422266:1141200 nonfatal user error> org.apache.openjpa.persistence.ArgumentException:org.apache.openjpa.persistence.argumentexception the specified parameter of type "class java.util.LinkedList" is not a valid query parameter.
    at org.apache.openjpa.jdbc.sql.DBDictionary.setUnknown(DBDictionary.java:1426)
    at org.apache.openjpa.jdbc.kernel.SQLStoreQuery$SQLExecutor.executeQuery(SQLStoreQuery.java:218)
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1005)
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863)
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794)
    at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542)
    at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:315)
    at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:331)

Итак, как я могу передать список или значения списка в свой запрос?

С наилучшими пожеланиями Веоте Полезно Бесполезно


person veote    schedule 18.07.2012    source источник


Ответы (1)


Попробуйте использовать запрос JPQL (не собственный)?

person Michael Wiles    schedule 18.07.2012
comment
Будет ли это работать с запросом JPQL? Могу ли я передать список в качестве параметра? - person veote; 18.07.2012
comment
Я предполагаю, что JPQL поддерживает такие вещи. Это JPQL из JPA 2.0. см. objectdb.com/java/jpa/query/jpql/collection. - person Michael Wiles; 19.07.2012