Tin's Blog

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            128 隨筆 :: 0 文章 :: 221 評論 :: 0 Trackbacks
          在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相關
          主站蜘蛛池模板: 永嘉县| 阿拉善左旗| 大丰市| 桂阳县| 孝义市| 化德县| 琼中| 临颍县| 汶川县| 凌源市| 东莞市| 海原县| 达尔| 玉环县| 上高县| 临桂县| 商城县| 嘉禾县| 安阳市| 利辛县| 方城县| 荆州市| 新巴尔虎左旗| 金平| 成安县| 绥阳县| 万盛区| 大同市| 湘阴县| 锡林浩特市| 怀来县| 宜章县| 镇赉县| 兴山县| 白银市| 土默特左旗| 奈曼旗| 上虞市| 镇康县| 芒康县| 阿图什市|