Igo*_*hin 6 java jpa eclipselink jpql jpa-2.0
JPA 2.0中是否有可能在jpql-query中为in-clause设置集合?(我正在使用EclipseLink)
下一个示例失败:
TypedQuery<Person> q = em.createQuery("select p from Person p where p.name in (?1)", Person.class);
List<String> names = Arrays.asList(new String[] { "Bill Gates", "Steve Jobs" });
// THIS FAILS
q.setParameter(1, names);
List<Person> persons = q.getResultList();
for (Person p: persons) {
System.out.println(p.getName());
}
Run Code Online (Sandbox Code Playgroud)
还有另一种方法吗?
以下是JPA 2.0规范关于IN表达式的内容:
4.6.9表达式
在条件表达式中使用比较运算符[NOT] IN的语法如下:
Run Code Online (Sandbox Code Playgroud)in_expression ::= {state_field_path_expression | type_discriminator} [NOT] IN { ( in_item {, in_item}* ) | (subquery) | collection_valued_input_parameter } in_item ::= literal | single_valued_input_parameter...
因此,根据规范,传递collection_valued_input_parameter时的正确语法不带括号:
select p from Person p where p.name in ?1
Run Code Online (Sandbox Code Playgroud)
这适用于EclipseLink.
| 归档时间: |
|
| 查看次数: |
9650 次 |
| 最近记录: |