setLong方法参数与数据类型不匹配

时间:2014-05-08 09:01:26

标签: java

以下代码:

 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)。

3 个答案:

答案 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)的参数指定相同的名称及其值。