由以下原因引起:org.hibernate.QueryException:并非所有命名参数都已设置:[isActive] [from User where isActive = :isActive]
Caused by: org.hibernate.QueryException: Not all named parameters have been set: [isActive] [from User where isActive = :isActive]
我有一个 table 个用户,由活跃用户的布尔值组成,如下所示 table
id | name | active
1 | john | false
2 | bob | true
3 | jeff | true
在上述结构中,我想检索 isActive 等于 true 的用户列表。
这是我的 hql 查询
public List getByIsActive(boolean isActive) {
return getSession().createQuery(
"from User where isActive = :isActive").list();
}
我是这样取的
@ResponseBody
@RequestMapping(value = "/get-all-activeusers", method = RequestMethod.GET)
public List<User> getAllActiveUsers() {
try {
boolean isActive = true;
return _userDao.getByIsActive(isActive);
} catch (Exception e) {
logger.error("Exception in fetching active users: ", e.getStackTrace());
e.printStackTrace();
}
return null;
}
我收到了这个错误
Caused by: org.hibernate.QueryException: Not all named parameters have been set: [isActive] [from User where isActive = :isActive]
at org.hibernate.internal.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:401)
at org.hibernate.internal.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:385)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:99)
at com.models.UserDao.getByIsActive(UserDao.java:64)
请问我哪里弄错了。我已经研究过,但它不是针对我面临的问题量身定做的。
您忘记为命名参数设置参数:更改 dao 方法,如:
public List getByIsActive(boolean isActive) {
return getSession().createQuery(
"from User where isActive = :isActive").setParameter("isActive", isActive)
.list();
}
如消息所述,您没有设置在查询中使用的参数,它不知道要做什么。
它应该是这样的:
public List getByIsActive(boolean isActive) {
return getSession().createQuery("from User where isActive = :isActive")
.setParameter("isActive", isActive)
.list();
}
我有一个 table 个用户,由活跃用户的布尔值组成,如下所示 table
id | name | active
1 | john | false
2 | bob | true
3 | jeff | true
在上述结构中,我想检索 isActive 等于 true 的用户列表。
这是我的 hql 查询
public List getByIsActive(boolean isActive) {
return getSession().createQuery(
"from User where isActive = :isActive").list();
}
我是这样取的
@ResponseBody
@RequestMapping(value = "/get-all-activeusers", method = RequestMethod.GET)
public List<User> getAllActiveUsers() {
try {
boolean isActive = true;
return _userDao.getByIsActive(isActive);
} catch (Exception e) {
logger.error("Exception in fetching active users: ", e.getStackTrace());
e.printStackTrace();
}
return null;
}
我收到了这个错误
Caused by: org.hibernate.QueryException: Not all named parameters have been set: [isActive] [from User where isActive = :isActive]
at org.hibernate.internal.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:401)
at org.hibernate.internal.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:385)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:99)
at com.models.UserDao.getByIsActive(UserDao.java:64)
请问我哪里弄错了。我已经研究过,但它不是针对我面临的问题量身定做的。
您忘记为命名参数设置参数:更改 dao 方法,如:
public List getByIsActive(boolean isActive) {
return getSession().createQuery(
"from User where isActive = :isActive").setParameter("isActive", isActive)
.list();
}
如消息所述,您没有设置在查询中使用的参数,它不知道要做什么。
它应该是这样的:
public List getByIsActive(boolean isActive) {
return getSession().createQuery("from User where isActive = :isActive")
.setParameter("isActive", isActive)
.list();
}