2017-02-09 64 views
0

我创建JPA(EclipseLink的)这样的查询JPA IN-参数

Query selectQuery = ... and SUBSTR(FOO, 0, 1) IN (?1) 

Query selectQuery = ... and SUBSTR(FOO, 0, 1) IN ?1 

我设置这样的参数:

selectQuery.setParameter(1, Arrays.asList(new String[] { "T" })); 

然而,它是告诉我 invalid column type

当我将查询更改为:

Query selectQuery = ... and SUBSTR(FOO, 0, 1) IN ('T') 

它按预期工作。

我错过了什么吗?

+0

可能的复制[参数的设定作为一个列表的IN表达式]的(http://stackoverflow.com/questions/1557085/setting-a-parameter-as-a-in-in-expression) –

+0

不,同样的例外! – matthias

+0

来自JPA或数据库的异常来自哪里? – Chris

回答

0

重复。无论如何,答案是使用SUBSTR(FOO, 0, 1) IN ?1而没有禁忌。

0

你传递一个列表作为参数,因此,你应该使用setParameterList方法:

selectQuery.setParameterList(1, Arrays.asList(new String[] { "T" })); 
+0

'javax.persistence.Query'没有'setParameterList' – matthias