`
yanghuidang
  • 浏览: 910472 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

QBC的六大硬伤

阅读更多

“硬伤”系列已经是炒得烂熟了,所以取这样的名字也是有点怕怕;不过在行业内混了几年,最近看花前柳下的文章少了,发现竟然取不出更好的名字,将就吧,呵呵。

以前用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中,取到了数据类型了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics