无法将 Hibernate 命名参数插入到 SQL 查询中:
String values="'a', 'b', 'c', 'd'";
SQLQuery query = getSession().createSQLQuery("SELECT * FROM data WHERE value IN (:values)");
query.setParameter("values", values);
List<Object[]> data = query.list(); // returns data: size = 0 ...
但是,如果我会写:
String values="'a', 'b', 'c', 'd'";
SQLQuery query = getSession().createSQLQuery("SELECT * FROM data WHERE value IN (" + values + ")");
List<Object[]> data = query.list(); // returns data: size = 15 ...
第二种方式返回数据而不是第一种方式。
我在 SQL 中使用命名参数做错了什么?
最佳答案
values
变量应该是字符串列表或数组,而不是字符串,因为参数在“IN”子句中。
因此,将您的代码更改为以下,它应该可以工作:
String[] values= {"a", "b", "c", "d"};
SQLQuery query = getSession().createSQLQuery("SELECT * FROM data WHERE value IN (:values)");
query.setParameterList("values", values);
List<Object[]> data = query.list();
关于java - SQLQuery 中的 Hibernate 命名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32889465/