Hibernate進行時

          有關(guān)Hibenrate及其相關(guān)工具的主頁
          隨筆 - 0, 文章 - 16, 評論 - 29, 引用 - 0
          數(shù)據(jù)加載中……

          關(guān)于條件查詢detachedCriteria的一點體會

          假設(shè)要通過stuName查詢一個學(xué)生Student記錄,可以如下:
          ?DetachedCriteria?dc?=?DetachedCriteria.forClass(Student.class);
          ??? dc.add(Restrictions.like("stuName", stuName, MatchMode.ANYWHERE));
          ??????

          ?如果要通過Student的Team的teamName查詢一個Student記錄,很多人都會這么寫:
          ?DetachedCriteria?dc?=?DetachedCriteria.forClass(Student.class);
          ??? dc.add(Restrictions.like("team.teamName", teamName, MatchMode.ANYWHERE));
          ??????

          遺憾的是上述程序報錯,說是在Student中找不到team.teamName屬性,這是可以理解的。那么如何通過teamName查找Student呢?
          可以這么寫:
          ?DetachedCriteria?dc?=?DetachedCriteria.forClass(Student.class);
          ??? dc.createAlias("team", "t");
          ??? dc.add(Restrictions.like("t.teamName", teamName, MatchMode.ANYWHERE));
          ??????
          沒錯,就是要先建立team的引用,才能用team導(dǎo)航到teamName。

          這里有一個特殊情況,如果是對引用對象的id查詢,則可以不用建立引用,也就是可以不調(diào)用createAlias()語句,如下所示:
          ?DetachedCriteria?dc?=?DetachedCriteria.forClass(Student.class);
          ??? dc.add(Restrictions.like("team.id", teamId, MatchMode.ANYWHERE));
          ??????
          據(jù)我個人的經(jīng)驗,team后只能跟其主鍵屬性,比較其他屬性要用別名。此主鍵屬性可以用“id”字符來指代,也可以用team的主鍵屬性來指代。換句話說,我的Student類的類主鍵“stuId”,不管是在HQL還是在QBC中,都可以用stu.id來指代stu.stuId。在這里可以看出“id”字符的特殊性。上述是個人觀點,并未得到確實的證實。

          posted on 2006-07-28 17:36 caixuetao 閱讀(4806) 評論(0)  編輯  收藏


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 岐山县| 东乌珠穆沁旗| 台湾省| 乌苏市| 凤山市| 田林县| 南木林县| 平和县| 临颍县| 万盛区| 绥江县| 墨竹工卡县| 壶关县| 怀来县| 临洮县| 青海省| 青神县| 桂东县| 哈尔滨市| 敦化市| 玉屏| 郴州市| 木兰县| 布尔津县| 师宗县| 姜堰市| 和硕县| 建瓯市| 攀枝花市| 巨野县| 班玛县| 嘉荫县| 乐昌市| 洛扎县| 东乌| 陵川县| 汾西县| 宁安市| 兰西县| 辽源市| 高阳县|