javax.persistence.Query 如何设置数组(集合)参数(spring data jpa)

西夏一品堂 2014-09-17 07:02:25
有如下sql语句,有一个参数(占位符)
String sql = select user_id,count(*) scount from tb_topics where type=0 and user_id in (?) group by user_id
user_id字段类型为string


@PersistenceContext()
private javax.persistence.EntityManager em;

javax.persistence.Query query = em.createNativeQuery(sql);

String[] arrayId = {182,139,213,400}


#请问,下面这里,用设置参数的方法,如何设置参数
query.setParameter(1, arrayId) --这样设置,报错。不行

PS : 别说用拼接sql语句的方法
...全文
691 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
西夏一品堂 2014-09-18
  • 打赏
  • 举报
回复
引用 1 楼 whos2002110 的回复:
参数下标是从1开始还是0开始,你这个没问题的话, 把() 去掉,直接 in ? 试试
参数下标是从1开始的 把() 去掉后,报错:

Hibernate: select user_id,count(1) cases_count from ts_topics where status=0 and user_id in ? group by user_id
09:46:47.768 [http-nio-9060-exec-1] WARN  org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 42601
09:46:47.769 [http-nio-9060-exec-1] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - 错误: 语法错误 在 "$1" 或附近的
  位置:83
09:46:47.799 [http-nio-9060-exec-1] ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause
org.postgresql.util.PSQLException: 错误: 语法错误 在 "$1" 或附近的
  位置:83
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102) ~[postgresql-9.1-901.jdbc4.jar:na]
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835) ~[postgresql-9.1-901.jdbc4.jar:na]
whos2002110 2014-09-17
  • 打赏
  • 举报
回复
参数下标是从1开始还是0开始,你这个没问题的话, 把() 去掉,直接 in ? 试试

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧