日期:2014-05-20  浏览次数:20797 次

JPA的JQL in查询问题
最近的一个项目是使用struts1.3+spring2.5+jpa框架。之前都是用hibernate3.3,现在想试着学习用下jpa技术(orm技术规范)。
在写jql语句时遇到一个问题:
Integer[] id=new Integer{1,2,3,4,5};
Query getRowsQuery = em.createQuery("select o from UserModel o where o.fd_id in(:fd_id)");
getRowsQuery.setParameter("fd_id",id);

这样预赋值时,程序报错。我记得hibernate处理这类问题时,预赋值都是
query.setParameterList("fd_id",new Integer[] {1,2,3,4,5});

请高手指点指点,谢谢... ...

------解决方案--------------------
fd_id是主键吗 换成=试试
------解决方案--------------------
程序报错?报什么错呢?

应该把错误也贴出来
------解决方案--------------------
在写jql语句时遇到一个问题:
Integer[] id=new Integer{1,2,3,4,5};
Query getRowsQuery = em.createQuery("select o from UserModel o where o.fd_id =:fd_id");
getRowsQuery.setParameter("fd_id",id);

这样写.
------解决方案--------------------
List<Integer> ids = new ArrayList<Integer>();
ids.add(1);
ids.add(2);
Map<String, Object> params = new HashMap<String, Object>();
params.put("ids", ids);
String jpql = "select o from oa_usersroles o where o.role.id in(:ids)";
List<Module> modules = em.createQuery(jpql).setParameter("ids", ids).getResultList();

测试通过了,可以这样做。上面例子你看看。