【发布时间】:2011-09-10 19:00:24
【问题描述】:
我知道我可以将列表传递给 JPA 中的命名查询,但是 NamedNativeQuery 怎么样?我尝试了很多方法,但仍然不能将列表传递给 NamedNativeQuery。任何人都知道如何将列表传递给 NamedNativeQuery 中的 in 子句?非常感谢!
NamedNativeQuery 如下:
@NamedNativeQuery(
name="User.findByUserIdList",
query="select u.user_id, u.dob, u.name, u.sex, u.address from user u "+
"where u.user_id in (?userIdList)"
)
它是这样调用的:
List<Object[]> userList = em.createNamedQuery("User.findByUserIdList").setParameter("userIdList", list).getResultList();
然而结果并不如我所料。
System.out.println(userList.size()); //output 1
Object[] user = userList.get(0);
System.out.println(user.length); //expected 5 but result is 3
System.out.println(user[0]); //output MDAVERSION which is not a user_id
System.out.println(user[1]); //output 5
System.out.println(user[2]); //output 7
【问题讨论】:
-
您是否尝试过使用数据库客户端执行完全相同的查询?
-
你不应该使用括号 (?userIdList) 只需删除括号就可以了
标签: jpa arraylist in-clause nativequery