方法赋值问题

ro_nice 2012-02-29 09:46:57
我写了一条这样语句

public List<BaseInfo> findbyIds(Integer[] ids) {
String hql = "from BaseInfo b where b.userID in (:ids)";
}


赋值请问怎么赋值? 方法的返回值应该是个List集合

除了上面这种写法?是不是有更清楚点的写法?
...全文
168 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ro_nice 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hzw2312 的回复:]
Java code


String hql = "from BaseInfo b where b.userID in (:ids)";


这样写、得这样赋值query.setString("ids", ids);
不过这样、因为你的变量类型是数组、所以得转换成String类型!
但是如果直接强制转换、那么转换出来的值是[Ljava.lang.Integer;@150bd4d这样……
[/Quote]

其实是可以用 query.setParameterList("ids",ids);这样赋值的
只不过我想找种更好的方法!
java菜鸟新爪 2012-02-29
  • 打赏
  • 举报
回复
query.setParameter("ids", ids);试试可以吗?hibernate语句还可以用in吗?我不清楚
BUG胡汉三 2012-02-29
  • 打赏
  • 举报
回复

String hql = "from BaseInfo b where b.userID in (:ids)";

这样写、得这样赋值query.setString("ids", ids);
不过这样、因为你的变量类型是数组、所以得转换成String类型!
但是如果直接强制转换、那么转换出来的值是[Ljava.lang.Integer;@150bd4d这样、并不是实际的值!
所以需要自己按照in()语句的语法要求自己循环的把ids的值取出来赋给一个字符串!


String hql = "from BaseInfo b where b.userID in (?)";

这样写、可这样赋值query.setParameter(0, ids);
这里的ids跟前面的一样、也是需要自己转换的!
当然如果你是int或者String这样就不需要你转换了。
setParameter从0开始、你有几个问号、就赋值几个!
如:from User u where u in (?,?,?,)
query.setParameter(0, 变量1);
query.setParameter(1, 变量2);
query.setParameter(2, 变量3);

你也可以将条件直接拼接到sql语句中!
fangkaifang 2012-02-29
  • 打赏
  • 举报
回复
return this.find(hql);
是这个意思么?
ro_nice 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fangkaifang 的回复:]
return this.find(hql);
是这个意思么?
[/Quote]

不是这个意思!
我的意思想把IN 去掉,组装sql

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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