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_sdatesysdate 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_sdatesysdate order by sort_Num,msg_Sdate desc) t) s where s.n in (:num)


把最里层的sql中指定的字段,改为“*”,问题得以解决。

你可能感兴趣的:(sql,hibernate)