QBC的六大硬傷

來源:互聯網
上載者:User

“硬傷”系列已經是炒得爛熟了,所以取這樣的名字也是有點怕怕;不過在行業內混了幾年,最近看花前柳下的文章少了,發現竟然取不出更好的名字,將就吧,呵呵。

以前用HQL比QBC多,網上都說QBC功能比HQL少,我也一直有這個感覺,但是從來沒有總結過:QBC到底比HQL差在哪裡呢?最近實現DAS標準,終於“全面”總結了一把。


1)一定要在HBM中有關聯,才能用到關聯的對象的屬性。如果沒有關聯,就只能用本對象的簡單屬性。
如果A和B對象沒有關聯,是不能一起查詢的。HQL就沒有這個缺點。
2)如果有projection,關聯一定要取別名。
3)別名一定不能和 HBM配置的關聯屬性名稱相同。說起來也有道理,為什麼要取個和自己名稱相同的別名呢?但是....為什麼就不可以呢?
4)如果主對象和從對象的有相同的屬性,那麼在criterion中,使用主對象可以直接寫屬性名稱,使用從對象一定要用 關聯的屬性的別名(用原名是不可以的哦)。
5)如果主對象和從對象的有相同的屬性,那麼在projection中,使用主對象可以直接寫屬性名稱,使用從對象一定要用 關聯的屬性的別名(用原名是不可以的哦)。
6)如果主對象和從對象的有相同的屬性,那麼在order中,使用主對象可以直接寫屬性名稱,使用從對象一定要用 關聯的屬性的別名(用原名是不可以的哦)。

呵呵,不用懷疑,說的就是hibernate的最新的3.2版的QBC。不過HQL也有個比較嚴重的問題:必須傳入資料類型;還好的是,我們已經從sessionFactory的cache中,取到了資料類型了。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.