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 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问