关于hibernate的原生sql查询

来源:百度知道 编辑:UC知道 时间:2024/06/05 14:32:56
下面是我的查询语句:
select top 5 {theme.*} from Theme {theme} where state=1 and type=1 order by newid()

下面是我的查询代码:
public List lisst(String sql) {
Session sess=super.getSession();
Query sqlquery=sess.createSQLQuery(sql).setEntity("theme",Theme.class);
List ls=sqlquery.list();
sess.close();
return ls;
}

下面是我报的错:
Parameter theme does not exist as a named parameter in [select top 5 {theme.*} from Theme {theme} where state=1 and type=1 order by newid()]

200分,在线急等!!
http://hi.baidu.com/linjk03/blog/item/fe996e777c53ca1db051b939.html
我是看了这个文章所以这么写的!

我感觉应该是order by newid()
我去掉这句话的话,就可以成功!加上去就出错了!呵呵!大家帮帮忙!

兄弟 不是分多少的问题 你能告诉我你表的结构和你想查询什么么
order by newid()
改成:
order by newid 试试

select top 5 {theme.*} from Theme {theme} where state=1 and type=1 order by newid()]
//更改如下 select top 5 {theme.*} from Theme {theme} where state=1 and type=1 order by newid

你把newid后面的() 去了 ~~~~

order by newid() ?你这个是个什么?一个函数?我看是数据库中的一个字段吧,应该是不带括号的吧~

试试order by newid

你把sql语句直接在sql server数据库中执行看下了。反正我觉得你的别名有问题啊

order by newid() 是mssql 里面取随机数据的 请问你用的mssql的数据库吗?

你写的那个SQL语句错了,不是order by newid()
的事,而是{theme} 的事情。
你这么写一下看看。
select top 5 theme from Theme where state=1 and type=1 order by newid()