如要组合条件查询产品信息,方法如下:
public List<Product> getAllProducts(String productcode,String productname,String groupname,String producttype)
{
StringBuffer hql= new StringBuffer("") ;
Session session=this.getSession() ;
Query query=null ;
List<Product> list=null ;
int i=0 ;
if("".equals(productcode) && "".equals(productname) && "".equals(groupname) && "".equals(producttype)){
hql.append("from Product p") ;
}else{
hql.append("from Product p where") ;
if(!"".equals(productcode)){ hql.append("p.productcode =? and") ;}
if(!"".equals(productname)){hql.append("p.productname=? and") ;}
if(!"".equals(groupname)){hql.append("p.groups.groupname=?and") ;}
if(!"".equals(producttype)){hql.append("p.producttype.name=? and") ;}
hql.delete(hql.length()-3,hql.length()) ;
}
try{
query=session.createQuery(hql.toString()) ;
if("".equals(productcode) && "".equals(productname) && "".equals(groupname) && "".equals(producttype)){
list=query.list() ;
}else{
if(!"".equals(productcode)){ query.setParameter(i , productcode) ; i++ ;}
if(!"".equals(productname)){ query.setParameter(i ,productname) ; i++ ;}
if(!"".equals(groupname)){ query.setParameter(i ,groupname) ; i++ ;}
if(!"".equals(producttype)){ query.setParameter(i ,producttype) ; i++ ;}
list=query.list() ;
}
return list ;
}catch(Exception ex)
{ex.printStackTrace() ;}
finally{
if(session!=null)
{session.close ;}
}
}