cxysilahi 2010-11-25 13:34
浏览 262
已采纳

hibernate的java.lang.NoSuchMethodError

[code="java"]

public void updDb(Session session){

try{
String hql = "select * from Sample";    
Query qr = session.createQuery(hql);
List list = qr.list();

for(int i = 0; i < list.size(); i++){
    Sample s = (Sample)list.get(i);
    System.out.println(s.getSampleId()+" : "+s.getName());
}
}
catch(HibernateException e){
e.printStackTrace();
}

[/code]
下面是错误:
2010-11-25 13:35:48,567 ERROR [org.hibernate.hql.PARSER] - line 1:8: unexpected token: *
Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V

怎么解决?

自己看出问题了,是查询语句写错了,现在想问个问题是使用hibernate查询,前面不能写'select [字段]...'么

  • 写回答

3条回答 默认 最新

  • xiaoyuebata 2010-11-25 14:42
    关注

    这个很好解决啊··你要搞明白HQL语句和SQL语句的区别,HQL语句是面向对象的,不需要知道底层数据库表中的各个字段名,因为Hibernate会根据映射文件去匹配,而SQL语句必须知道各个字段名。
    Hibernate的一大特性就是会自动生成SQL语句:
    以你上面的例子来看,你是想查询与Sample类关联的表的所有记录,这时候的HQL语句
    只要写成
    String hql="form Sample";即可,
    当你要进行多表链接查询的时候再加select。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败