Hibernate createNativeQuery 使用 IN 子句
使用Java、Hibernate。
我有一个查询,
String pixIds = "1,2,3";
String query = "SELECT * FROM comment WHERE PIX_ID IN (:pixIds)";
q.setParameter("pixIds", pixIds);
List<Object[]> results = q.getResultList();
我无法使用上面的代码将此参数绑定到 pixIds。这样做的正确方法是什么?
注意:我这里的查询是实际查询的简化版本。
Using Java, Hibernate.
I have a query
String pixIds = "1,2,3";
String query = "SELECT * FROM comment WHERE PIX_ID IN (:pixIds)";
q.setParameter("pixIds", pixIds);
List<Object[]> results = q.getResultList();
I'm not able to bind this parameter to pixIds using the code above. What is the right way to do this?
Note : the query I have here is a simplified version of my actual query.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
以下方法有效
public Query setParameterList(String name, Collection vals) 抛出 HibernateException
The following method works
public Query setParameterList(String name, Collection vals) throws HibernateException
Hibernate 不支持在 SQL 查询中将集合绑定到
IN (...)
。您需要以与普通 JDBC 相同的方式工作:给定一个集合,在
IN
子句中动态生成具有适当数量的?
的查询,然后绑定该集合的元素集合到?
。Hibernate doesn't support binding collection to
IN (...)
in SQL queries.You need to work the same way as with plain JDBC: given a collection, dynamically generate a query with appropriate number of
?
s inIN
clause, and then bind elements of that collection to?
s.