SQL转HQL如何解决from后面子查询问题

原SQL语句如下:SELECT*FROMuserWHEREuseridIN(SELECTexpertidFROM(SELECTexpertid,COUNT(experti... 原SQL语句如下:

SELECT * FROM user WHERE userid IN
(SELECT expertid FROM
(SELECT expertid, COUNT(expertid) AS num FROM concernedexpert
GROUP BY expertid) AS result ORDER BY result.num DESC);
描述一下:
concernedexpert 表指的是 的联合主键是 userid expertid,
用来存储某用户关注某专家这个关系(Chinglish 见笑)
用户与专家其实是同一张表,主键都是userid,
不过在concernedexpert表里面分别用userid 和 expertid表示罢了
上述的三层SQL查询的目的是:(sql功力差,见笑)
首先要得到专家被用户关注的数目,然后降序排列
然后从上述结果中取出expertid
最后用取出来的expertid去用户表里面把这些行找出来。
SQL语句是跑的通的, 也正确得到了结果。
但是现在要转成HQL语句,然而HQL语句的FROM后面是不能跟子查询的。
不想用原生SQL查询,求助各位。
展开
 我来答
榔负诺
2016-09-26 · 超过98用户采纳过TA的回答
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:137万
展开全部
Hibernate也有方法执行sql语句,像这种带子查询的语句hql好像执行不了,复杂我们一般都用sql语句,Hibernate执行sql如下:
Query query = session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List list = query.list();
追问
谢谢。刚接触hibernate,很多东西不熟悉。
请问一下,这里执行sql语句查询之后,在setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)之后就得到了对应的实体吗?
是List list = query.list(); 还是 List list = query.list();?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式