在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.GENUShibernate生成的语句:
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 * 导致了错误的出现。请问有没有解决的办法,或者有其他的方法解决这个问题 谢谢了。Hibernatesqlselect

解决方案 »

  1.   

    对不起,应该不是上午说的那个错误。
    我觉得应该是这样,楼主试一下
    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 <= ?
      

  2.   

    对不起,应该不是上午说的那个错误。
    我觉得应该是这样,楼主试一下
    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 <= ?这个select * from 是用了hibernate的分页函数setFirstResult,setMaxResult以后自己生成的 没法改的
      

  3.   

    我觉得你应该将你的XXXX.hbm.xml配置贴出来,然后再将你的Dao层调用hibernate的代码贴出来
      

  4.   

    对不起,应该不是上午说的那个错误。
    我觉得应该是这样,楼主试一下
    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 <= ?这个select * from 是用了hibernate的分页函数setFirstResult,setMaxResult以后自己生成的 没法改的
    是的  我换了一种连接方式