我正在尝试在查询中设置参数,例如:
select * from Cars where Cars.color NOT IN (:color_params)
当我在我的JavaClass中添加参数时,就像:
...
query.setParameter("color_params", "RED,BLUE");
...
这不起作用,只使用只有一个参数
我试过"'RED','BLUE'"
并没有努力。
如果我将查询中的参数放在例如:
select * from Cars where Cars.color NOT IN ('RED','BLUE')
我做错了什么!?
提前致谢
答案 0 :(得分:13)
你应该传递一个List。
List<String> colors = ....;
String query = "select * from Cars where Cars.color NOT IN (:color_params)";
Map<String, Object> params = new HashMap<String, Object>();
params.put("color_params", colors);
// ... execute the query with the param.
你也可以这样做:
query.setParameter("color_params", colors);
作为一般规则,通常优先将参数传递给固定查询,而不是自定义String。优点可能是:
答案 1 :(得分:1)
您必须传入字符串列表,而不是单个字符串。 JPA不会解析您的值,您必须自己拆分它们。