这是我原来的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中指定的字段,改为“*”,问题得以解决。