用SSH做项目时:在dao的实现类中写了这样一个方法:
public List findByMap(Map map, int pageNo, int pageSize,KUser kuser) {
int firstResult = (pageNo-1)*pageSize;
StringBuffer sb = new StringBuffer("from KUser as c where c.userName="+"or c.type.typeId="+kuser.getType().getTypeId());
if(map!=null)
{
Set set = map.keySet();
Iterator it = set.iterator();
while (it.hasNext())
{
String coluname = (String) it.next();
sb.append(" and c." + coluname + "='" + map.get(coluname) + "'");
}
}
String sql = sb.toString();
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
Query query = session.createQuery(sql);
query.setFirstResult(firstResult);
query.setMaxResults(pageSize);
List list = query.list();
return list;
}
注:这个为会员类:kuser. type为会员类型与会员类为one-to-many的关系:typeId=1为个人会员 ,typeId=2为企业会员.
我现在做的是查询功能,既通过会员类型(个人会员,企业会员),查询会员的资料。
当查询typeId=2(企业会员)的会员时
(from KUser as c where c.userName=''or c.userCardId=''or c.company.name=''or c.type.typeId=2),显示查询结果。
但是查询typeId=1(个人会员)的会员时
(from KUser as c where c.userName=''or c.userCardId=''or c.company.name=''or c.type.typeId=1),没有查询结果,随后抛出异常:java.sql.SQLException: ResultSet may only be accessed in a forward direction.(结果集只能前向访问,不能回溯访问 )
是什么原因呢?怎么解决?