OpenJPA本机查询如何使用带有列表的IN运算符

时间:2012-07-18 09:21:58

标签: java openjpa

我在WebSphere Application Server上使用带有MySQL 5 DB的OpenJPA 2.1。

我有一个日期列表,并希望使用IN运算符仅获取DB中的条目,其中DB中的日期也在列表中。

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指定的type参数不是有效的查询参数

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)

那么如何将List或List Values传递给我的查询呢?

最诚挚的问候 Veote

1 个答案:

答案 0 :(得分:1)

尝试使用JPQL(非本机)查询?