sql 在sqlplus下能正確執行,但是hibernate 原生sql執行報列名無效錯誤
這是我原來的sql:
String sql="select s.* from(select t.*,rownum n from (select id,msg_Title,msg_Sdate from Sys_Msg where status=? and msg_sdate<sysdate and msg_edate>sysdate order by sort_Num,msg_Sdate desc) t) s where s.n in (:num)";
在sqlplus下能爭取執行,但是
Query query=this.getSession().createSQLQuery(sql).addEntity(SysMsg.class); query.setParameter(0, Status.SURE.value()); query.setParameterList("num", nums); query.list();
報SQL Error: 17006, SQLState: null 列名無效錯誤。
後修改sql為:
select s.* from(select t.*,rownum n from (select * from Sys_Msg where status=? and msg_sdate<sysdate and msg_edate>sysdate order by sort_Num,msg_Sdate desc) t) s where s.n in (:num)
把最裡層的sql中指定的欄位,改為“*”,問題得以解決。