Tin's Blog

          You are coming a long way, baby~Thinking, feeling, memory...

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            128 隨筆 :: 0 文章 :: 221 評論 :: 0 Trackbacks
          <2006年5月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          公告

           
          Tin是一個熱愛收集最佳實踐的程序員。曾經在小型Java團隊中擔任架構師,后在新浪郵件部門領導RIA團隊進行開發,目前是自由程序員,接受Java/ RIA/ RoR項目和咨詢。
          業余時間積極進行敏捷實踐和參與社區討論,對RoR和Django感興趣。在社區中還積極參與開源項目的文檔中文化工作。目前為InfoQ中文站做社區編輯。

          業余愛好:編程、硬件、Mac、美術、音樂(Rock)、電影、攝影、集圖、集郵、Quake3、旅行、美食

          常用鏈接

          留言簿(20)

          隨筆分類(63)

          隨筆檔案(58)

          文章分類

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          在Hibernate中獲取有關聯關系的pojo。我是指例如一個User(用戶)擁有一個many-to-one的屬性Unit(單位),但是有時有些用戶的Unit屬性為空,如果按單位查詢用戶的時候那些單位為null的用戶就會被遺漏,如何調取呢?這本來是很簡單的,但是我想當然的使用了Restriction.eq,但是不行,后來看了手冊才發現應該使用Restrictions.isNul。下面是Test代碼...

          ????/**
          ?????*?為了獲取一個unit為null的用戶,如果傳入一個null作為Uint實例則返回的結果總是0
          ?????*?因為執行的SQL為:(select?*?)?from?USER_INF?this_?where?this_.UNIT_ID=''
          ?????*?這不是我們所期望的結果
          ?????
          */

          ????@Test
          ????
          public?void?getUsersWhosUnitIsNullByRestrictionsEqNullUnit()?{
          ????????DetachedCriteria?dc?
          =?DetachedCriteria.forClass(User.class);
          ????????dc.add(Restrictions.eq(
          "unit",?null));

          ????????Criteria?cri?
          =?dc.getExecutableCriteria(session);
          ????????log.debug(
          "getUsersWhosUnitIsNullByRestrictionsEqNullUnit():"?+?cri.list().size());
          ????}

          ????
          ????
          /**
          ?????*?為了獲取一個unit為null的用戶,如果傳入一個id為null的Unit實例則會報錯,無法翻譯為SQL
          ?????*?錯誤類型為:org.hibernate.TransientObjectException
          ?????*?這也不是我們所期望的結果
          ?????
          */

          ????@Ignore
          ????@Test(expected
          =TransientObjectException.class)
          ????
          public?void?getUsersWhosUnitIsNullByRestrictionsEqUnitNullId()?{
          ????????Unit?unit?
          =?new?Unit();
          ????????log.debug(unit.getId());
          ????????DetachedCriteria?dc?
          =?DetachedCriteria.forClass(User.class);
          ????????dc.add(Restrictions.eq(
          "unit",?unit));

          ????????Criteria?cri?
          =?dc.getExecutableCriteria(session);
          ????????log.debug(
          "getUsersWhosUnitIsNull():"?+?cri.list().size());
          ????}


          ????
          /**
          ?????*?為了獲取一個unit為null的用戶正確的方法應該是使用Restrictions.isNull方法
          ?????*?因為執行的SQL為:(select?*?)?from?USER_INF?this_?where?this_.UNIT_ID?is?null
          ?????*?這才是我們所希望的結果
          ?????
          */

          ????@Test
          ????
          public?void?getUsersWhosUnitIsNullByRestrictionsIsNull()?{
          ????????DetachedCriteria?dc?
          =?DetachedCriteria.forClass(User.class);
          ????????dc.add(Restrictions.isNull(
          "unit"));

          ????????Criteria?cri?
          =?dc.getExecutableCriteria(session);
          ????????log.debug(
          "getUsersWhosUnitIsNullByRestrictionsIsNull():"?+?cri.list().size());
          ????}
          posted on 2006-05-11 13:09 Tin 閱讀(2385) 評論(0)  編輯  收藏 所屬分類: Hibernate相關
          主站蜘蛛池模板: 衡山县| 茂名市| 大厂| 雷州市| 炎陵县| 漯河市| 常德市| 巴彦县| 仲巴县| 河津市| 文登市| 新龙县| 张家口市| 赣州市| 泰安市| 蕉岭县| 开江县| 五指山市| 麟游县| 阜康市| 丽江市| 平罗县| 长宁县| 信宜市| 肃宁县| 靖远县| 平南县| 潜山县| 库伦旗| 石阡县| 德化县| 昌都县| 济宁市| 合水县| 临沭县| 恩平市| 汉源县| 读书| 巴彦县| 阳谷县| 封丘县|