在myeclipse的反向工程中编写一个查询语句如下
public List findbyname(String name) throws Exception
{
log.debug("find Address instance with aname:"+name);
try {
Session session=getSession();
Transaction transaction=session.beginTransaction();
String queryString = "from Address as model where model.aname=:name1";
Query ObjQuery=getSession().createQuery(queryString);
ObjQuery.setParameter(name1, name);
transaction.commit();
return ObjQuery.list();
} catch (Exception e) {
// TODO: handle exception
log.debug("from Address as model where model."
+"aname="+name);
throw e;
}
}
运行语句如下
AddressDAO aDao =new AddressDAO();
List k=aDao.findbyname("北京");
System.out.println(k.size());
for(Object obj:k)
{
Address add=(Address)obj;
System.out.print(add.getAname()+" ");
System.out.println(add.getAid());
}
结果报could not locate named parameter(无法定位命名参数)错误
发现ObjQuery.setParameter(name1, name);的占位名有错,应加上冒号
正确语句应为ObjQuery.setParameter("name1", name);
还发现当传输的值有空时也会报could not locate named parameter(无法定位命名参数)错误
这是粗心犯的错,写程序要细心仔细