日期:2014-05-18  浏览次数:20791 次

hibernate 使用sql出现错误 ORA-00918: 未明确定义列
在hibernate中使用sql进行联表查询时出现错误 ORA-00918: 未明确定义列

sql语句:
select b.*,c.*,d.*,e.* from B_COLLECT_INFO b,B_SPECIMEN_CLASS_TABLE c,B_SPECIMEN_CLASS_TABLE d,B_SPECIMEN_CLASS_TABLE e where c.CLASS_ID(+)= b.ORDERS and d.CLASS_ID (+)= b.FAMILY and e.CLASS_ID(+)= b.GENUS

hibernate生成的语句:
Hibernate: select b.*,c.*,d.*,e.* from B_COLLECT_INFO b,B_SPECIMEN_CLASS_TABLE c,B_SPECIMEN_CLASS_TABLE d,B_SPECIMEN_CLASS_TABLE e where c.CLASS_ID(+)= b.ORDERS and d.CLASS_ID (+)= b.FAMILY and e.CLASS_ID(+)= b.GENUS

这一条是可以执行的 没有错误。但是加上分页的时候,生成的sql语句就有错了:
Hibernate: select * from ( select b.*,c.*,d.*,e.* from B_COLLECT_INFO b,B_SPECIMEN_CLASS_TABLE c,B_SPECIMEN_CLASS_TABLE d,B_SPECIMEN_CLASS_TABLE e where c.CLASS_ID(+)= b.ORDERS and d.CLASS_ID (+)= b.FAMILY and e.CLASS_ID(+)= b.GENUS ) where rownum <= ?

这是分页生成的sql语句,可能是分页语句里面的select * 导致了错误的出现。

请问有没有解决的办法,或者有其他的方法解决这个问题 谢谢了。

Hibernate sql select

------解决方案--------------------
引用:
rownum指的是哪一张表的?

对不起,应该不是上午说的那个错误。
我觉得应该是这样,楼主试一下
select x.* from ( select b.*,c.*,d.*,e.* from B_COLLECT_INFO b,B_SPECIMEN_CLASS_TABLE c,B_SPECIMEN_CLASS_TABLE d,B_SPECIMEN_CLASS_TABLE e where c.CLASS_ID(+)= b.ORDERS and d.CLASS_ID (+)= b.FAMILY and e.CLASS_ID(+)= b.GENUS ) x where rownum <= ?