回答

收藏

如何将本机SQL查询转换为HQL

技术问答 技术问答 233 人阅读 | 0 人回复 | 2023-09-12

所以我有这个长而复杂的机器SQLQuery:8 N4 `1 Q6 T* D" b6 o3 K
        string hql =     @"SELECT *     FROM    (SELECT a.*,rownum r__    FROM     (select f2.filmid,   f2.realisateurid,    f2.titre,    f2.annesortie,    f2.langue,    f2.duree,    f2.resume,    f2.poster,    f2.qtytotal,    f2.qtydisponible from film f2   where f2.filmid in  select distinct f.filmid       from film f,filmpays fp,pays p,filmgenre fg,genre g,informationpersonnel director,role r,informationpersonnel actor       where f.filmid = fp.filmid       and fp.paysid = p.paysid       and f.filmid = fg.filmid       and fg.genreid = g.genreid       and f.realisateurid = director.personelid       and f.filmid = r.filmid       and r.personelid = actor.personelid       and f.qtydisponible > 0        and upper(f.titre) LIKE :titre       and f.annesortie >= :anneeLow AND f.annesortie = (((:page - 1) *8)  1) "; /*Begin transaction *            ITransaction tx = s.BeginTransaction();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IQuery query = s.CreateQuery(hql);            query.SetString("titre","%"   sp.Title.ToUpper()   "%");            query.SetInt32("anneeLow",sp.YearLow);            query.SetInt32("anneeHigh",sp.YearHigh);            query.SetString("pays","%"   sp.Country.ToUpper()   "%");            query.SetString("langue","%"   sp.Lang.ToUpper()   "%");     query.SetString("genre","%"   sp.Genre.ToUpper()   "%");        query.SetString("realisateur","%"   sp.Director.ToUpper()   "%");        query.SetString("acteur","%"   sp.Actor.ToUpper()   "%");        query.SetInt32("page",page);        IList movies = query.List();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;tx.Commit();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;return movies;我试着用100%高质量的写作方式
9 T$ |; u2 g4 O" o' I类似于% M; p  a2 u4 m' j; W5 l
IList moreCats = sess.CreateQuery(    "from Cat as cat where "       "cat.Name = 'Fritz' or cat.id = :id1 or cat.id = :id2").SetInt64("id1",id1).SetInt67("id2",id2).List();在查阅hql文档之后,我知道怎么了hql简单的小查询,但是如果我从另一个选择(如查询)中选择一个复合选择呢?
8 q" Y4 F" h% G" @谢谢/ F4 v9 ?- Q" }
                                                                , ^4 B6 }0 h) \0 h: Y. e. E
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则