[
https://issues.apache.org/jira/browse/OPENJPA-2018?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Romain Manni-Bucau updated OPENJPA-2018:
----------------------------------------
Attachment: OPENJPA-2018-test-update.patch
updating the test.
Note: I kept supported for runtime unenhancedclass cause ATM the parent is not
hacking classloaders to do enhancement in test (it relies on mvn AFAIK) so it
is not easy to work on tests without it and for this test this is enough.
> Cannot bind String[] to ParameterExpression for path.in(parameter)
> ------------------------------------------------------------------
>
> Key: OPENJPA-2018
> URL: https://issues.apache.org/jira/browse/OPENJPA-2018
> Project: OpenJPA
> Issue Type: Bug
> Components: jpa
> Affects Versions: 2.1.0
> Reporter: Oliver Gierke
> Assignee: Michael Dick
> Labels: binding, criteria_api, jpa
> Attachments: OPENJPA-2018.patch, OPENJPA-2018-test-update.patch,
> openjpa-2018.zip
>
>
> Given the following code:
> {code}
> User user = new User("Dave", "Matthews", "[email protected]");
> em.persist(user);
> em.flush();
> CriteriaBuilder builder = em.getCriteriaBuilder();
> CriteriaQuery<User> criteria = builder.createQuery(User.class);
> Root<User> root = criteria.from(User.class);
> criteria.where(root.get("firstname").in(builder.parameter(String[].class)));
> TypedQuery<User> query = em.createQuery(criteria);
> for (ParameterExpression parameter : criteria.getParameters()) {
> query.setParameter(parameter, new String[] {"Dave", "Carter"});
> }
> List<User> result = query.getResultList();
> assertThat(result.isEmpty(), is(false));
> {code}
> I get a
> {code}
> <openjpa-2.0.0-r422266:935683 nonfatal user error>
> org.apache.openjpa.persistence.ArgumentException: The specified parameter of
> type "class [Ljava.lang.String;" is not a valid query parameter.
> {code}
> Using {{Collection}} as {{ParameterExpression}} type and binding the
> parameters via {{Arrays.asList(...)}} works fine.
--
This message was sent by Atlassian JIRA
(v6.1#6144)