在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
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
我觉得应该是这样,楼主试一下
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 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以后自己生成的 没法改的
我觉得应该是这样,楼主试一下
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以后自己生成的 没法改的
是的 我换了一种连接方式