<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    自由飛翔

    我在仰望,java之上

    統計

    留言簿(2)

    我關注的blog

    閱讀排行榜

    評論排行榜

    hql如何解決聯合查詢了?

         最近在一次電話面試中,被問到這么個問題。
        文章參考: http://369619017.blog.163.com/blog/static/7628038520098186273313/ package com.shiryu.otm;

    import java.util.Iterator;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;

    //hql 的聯合查詢
    public class HqlTest {
        public static void main(String[] args) {
            SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

            // 1.Inner Join 返回所有滿足關聯條件的記錄組合
            // 使用fetch關鍵字表明Address對象屬性讀出后立即填充到對應的User對象(addresses集合屬性)中
            // 如果不使用fetch 結果集中,每個條目都是一個Object數組
            Session session = sessionFactory.openSession();

            String hql = "from User user inner join fetch user.addresses";

            Iterator it = session.createQuery(hql).list().iterator();
            while (it.hasNext()) {
                User user = (User) it.next();
                System.out.println(user.getId() + " " + user.getName() + " " + user.getAddresses());
            }
            session.close();

            // 2.Left outer join
            // 返回User表中所有的記錄(hql中位于左側的表),及其對應的地址信息,如果沒有則用null代替
            Session session1 = sessionFactory.openSession();
            Transaction tr1 = session1.beginTransaction();

            String hql2 = "from User user left join fetch user.addresses";

            Iterator it2 = session1.createQuery(hql2).list().iterator();
            while (it2.hasNext()) {
                User user = (User) it2.next();
                System.out.println(user.getId() + " " + user.getName() + " " + user.getAddresses());
            }
            session1.close();
            // right outer join 則與left相反 fetch 對其無效
            // full join 是left outer join和right outer join的并集

            // 4.6.8子查詢的使用
            Session session2 = sessionFactory.openSession();
            Transaction tr2 = session2.beginTransaction();

            String hql3 = "from User user where (select count(*) from user.addresses)>1";

            Iterator it3 = session2.createQuery(hql3).list().iterator();
            while (it3.hasNext()) {
                User user = (User) it3.next();
                System.out.println(user.getId() + " " + user.getName());
            }
            session2.close();

            // hibernate 也提供sql查詢方式(有問題?)
            Session session3 = sessionFactory.openSession();
            Transaction tr3 = session3.beginTransaction();

            String sql = "select {user.*} from User as user";

            Iterator it4 = session3.createSQLQuery(sql).list().iterator();
            while (it4.hasNext()) {
                User user = (User) it4.next();
                System.out.println(user.getId() + " " + user.getName());
            }
        }

    } 

    Gavin

    posted on 2011-08-08 00:21 GavinMiao 閱讀(1633) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲AV成人无码网天堂| 在线观看人成视频免费| 暖暖免费中文在线日本| 亚洲一区在线视频观看| 亚洲国产香蕉碰碰人人| 久久亚洲欧洲国产综合| 国产一区二区三区免费在线观看 | 在线观看免费国产视频| 美女内射毛片在线看免费人动物| 精品无码一级毛片免费视频观看| 高潮毛片无遮挡高清免费视频| 亚洲人成人网毛片在线播放| 一区二区三区亚洲| 亚洲av永久无码精品表情包| 久久久久国产成人精品亚洲午夜| 日韩精品视频免费观看| 毛片免费观看网站| 可以免费看黄视频的网站| xxxxwww免费| 97国产在线公开免费观看| 国产无遮挡裸体免费视频在线观看| eeuss草民免费| 午夜在线免费视频| 午夜免费国产体验区免费的| 日日躁狠狠躁狠狠爱免费视频| 美女被爆羞羞网站免费| 菠萝菠萝蜜在线免费视频| 国产精品亚洲精品爽爽| 狠狠综合亚洲综合亚洲色| 亚洲va中文字幕| 在线观看亚洲免费视频| 国产亚洲男人的天堂在线观看| 看全免费的一级毛片| 五月天婷婷免费视频| 国产精品美女免费视频观看| 男女一边桶一边摸一边脱视频免费 | 亚洲国产午夜精品理论片在线播放| 国产精品高清视亚洲一区二区| 亚洲一卡2卡3卡4卡乱码 在线| 国产亚洲精品成人AA片| 精品国产亚洲AV麻豆|