![](/img/trans.png)
[英]java.lang.IllegalArgumentException: Parameter with that name [xxx] did not exist
[英]java.lang.IllegalArgumentException: Parameter does not exist as a named parameter in
public List<Data> List(String name, String id, int lowerBound, int upperBound) throws WiMatchException {
try {
Session session = getHibernateTemplate().getSessionFactory().openSession();
SQLQuery query = session.createSQLQuery("select * from data inner join route on (data.id=route.data_id and data.status=:status and data.is_active='Y' and route.owner_id= :ownerId) LIMIT lowerBound,upperBound ");
query.addEntity(UserData.class);
query.setString("status", status);
query.setString("ownerId", ownerId);
query.setInteger("lowerBound", lowerBound);
query.setInteger("upperBound", upperBound);
List<UserData> resList = query.list();
logger.debug("size of List() =" + resList.size());
session.close();
return resList;
} catch (Exception e) {
...
}
}
執行上述方法時,我遇到異常
java.lang.IllegalArgumentException: Parameter lowerBound does not exist as a named parameter in [select * from data inner join route on (data.id=route.data_id and data.status=:status and data.is_active='Y' and route.owner_id= :ownerId) LIMIT lowerBound,upperBound ]
需要建議來解決這個問題
您缺少lowerBound
和upperBound
前面的參數指示符(冒號)。
SQLQuery query = session.createSQLQuery(
"select * from data "+
"inner join route on (data.id=route.data_id and data.status=:status and data.is_active='Y' and route.owner_id= :ownerId)"+
"LIMIT :lowerBound,:upperBound "
);
如果沒有這些指示符,JDBC就不會知道這些是參數,而是將它們與列名混淆。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.