org.hibernate.hql.ast.ErrorCounter reportError解决办法

程序使用ssh整合框架,DAO实现层中的一个方法

/**
  * 根据来电号码获取前三条表单信息
  * @param billInfoTelephone 来电号码
  * @return 前三条表单信息
  */

public List<BillInfo> getTopThreeBillInfos(String billInfoTelephone){
  
 List<BillInfo> list = new ArrayList<BillInfo>();
  SessionFactory sessionFactory = this.getHibernateTemplate().getSessionFactory();
  Session session = sessionFactory.openSession();
  try{
   if(billInfoTelephone!=null){
    StringBuffer hql = new StringBuffer("");

    hql.append("select top 3 * from BillInfo b where b.baseInfo.billInfoTelephone=:billInfoTelephone")
    //按来电时间降序排列
    .append(" order by b.baseInfo.answerTime desc");
    
    Query query = session.createQuery(hql.toString());

    query.setParameter("billInfoTelephone", billInfoTelephone);
   
 list = query.list();    
   }
  }catch(Exception e){
   Log.warn(AddInfoDAOImpl.class +".getTopThreeBillInfos方法:"+e.getMessage());
  }

  
  session.close();
  return list;

控制台错误:

2011-4-2 14:18:19 org.hibernate.hql.ast.ErrorCounter reportError
严重: line 1:12: unexpected token: 3
2011-4-2 14:18:19 org.hibernate.hql.ast.ErrorCounter reportError
严重: line 1:16: unexpected token: from
2011-4-2 14:18:19 org.hibernate.jdbc.util.SQLStatementLogger logStatement

 

修改为以下代码,问题解决,主要注意黄色部分。

/**
  * 根据来电号码获取前三条表单信息
  * @param billInfoTelephone 来电号码
  * @return 前三条表单信息
  */
 public List<BillInfo> getTopThreeBillInfos(String billInfoTelephone){
  
  List<BillInfo> list = new ArrayList<BillInfo>();
  SessionFactory sessionFactory = this.getHibernateTemplate().getSessionFactory();
  Session session = sessionFactory.openSession();
  try{
   if(billInfoTelephone!=null){
    StringBuffer hql = new StringBuffer("");

    hql.append("from BillInfo b where b.baseInfo.billInfoTelephone=:billInfoTelephone")
    //按来电时间降序排列
    .append(" order by b.baseInfo.answerTime desc");
    
    Query query = session.createQuery(hql.toString());

    query.setParameter("billInfoTelephone", billInfoTelephone);

    list = query.list().subList(0, 2);

   }
  }catch(Exception e){
   Log.warn(AddInfoDAOImpl.class +".getTopThreeBillInfos方法:"+e.getMessage());
  }
  
  session.close();
  return list;
 }

 

总结:hql中from关键字前不能有其他信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值