日期:2014-05-19  浏览次数:20667 次

使用Hibernate时遇到的一个小问题,高手请赐教!
我用hibernate执行的是原生态的sql语句,前一个项目里都没问题,现在这个却遇到问题了,报错
java.sql.SQLException: Column 'id0_' not found.
.....
...
按照这样的报错应该是我的SQL写错了但是,我的SQL语句就一句:
select * from Sumassage
我用MYSQL查询的结果如下:
mysql> select * from smassage;
+----+-------------------+--------------+-------------+
| id | zidongshuaxintime | jiansuoguize | beizhu |
+----+-------------------+--------------+-------------+
| 1 | 25 | 15 | nianshen |
| 2 | 25 | 18 | erbao |
| 3 | 25 | 13 | baoxian |
| 4 | 25 | 14 | yingyun |
| 8 | 25 | 12 | shangyexian |
+----+-------------------+--------------+-------------+
5 rows in set (0.00 sec)

那么怎么会报这样的错呢》》??

------解决方案--------------------
把你的代码贴出来 ,,Hibernate可能将你的sql语句 当成HQL执行了

------解决方案--------------------
哈哈!!!sql 语句的问题,你仔细看看,语句太多混了吧
------解决方案--------------------
不用*分别将列写出来试试行不行?
------解决方案--------------------
检查一下你的Smassage.hbm.xml里(或者注解映射),有没有跟数据库表里字段不一致的地方。

addEntity后,会按hbm做匹配,createSQLQuery也不是真正的原生,只是SQL语句直接发给DB,但返回值还是要按hbm的定义解析的,如果真写原生的,就把connection拿出来写吧,虽然这不是建议的方式。
------解决方案--------------------
没遇到过这类问题
用hibernate为什么不用HQL呢,觉得也挺好用的,又符合hibernate的特性
------解决方案--------------------
SQL code

select * from smassage
改成 指定列名如:
select 列名1,列名2 from smassage

------解决方案--------------------
不会吧!从来没遇见过 检查一下你的xml文件和实体吧 肯定是哪里用的id0_,name1_0_0_,time2_0_0_,beizhu0_0 不然不会 select出来的