以下代码:
public int getCount(long user_id){
Query q = getSession().createQuery("select count(Items) from User_detail as U where U.user_id = :user_id ");
q.setLong(user_id, user_id);
int ItemCount =((Long)q.uniqueResult()).intValue();
return ItemCount;
}
抱怨
Query类型中的方法setLong(int,long)不适用于参数(long,long)。
答案 0 :(得分:2)
在方法setLong(int, long)
中,第一个参数(int)是查询中param的索引,而不是param本身。所以你必须这样做:
q.setLong(1, user_id);
或者你可以使用参数的名称,所以你也可以这样做:
q.setLong("user_id", user_id);
通过第二种方式,第一个参数是String
而不是int
答案 1 :(得分:0)
方法setLong()aceepts
setLong(int position, long val)
所以我猜您应该将其修改为
setLong(1, user_id)
答案 2 :(得分:0)
将其更改为
q.setLong("user_id", user_id);
您已使用参数:user_id 作为查询中的键。因此,您必须为函数setLong(String, value)
的参数指定相同的名称及其值。