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查询,求助各位。 展开
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查询,求助各位。 展开
展开全部
Hibernate也有方法执行sql语句,像这种带子查询的语句hql好像执行不了,复杂我们一般都用sql语句,Hibernate执行sql如下:
Query query = session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List list = query.list();
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();?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询