2008-05-10
这能否算Hibernate的Bug?
关键字: bug id
遇到一个非常奇怪的问题,感觉象hibernate的bug,即使不是bug,也是设计的有失偏颇。
一个简单的Pojo映射如下:
oid为自增long类型,id为guid,表中为string类型.
简单查询的hql为:from Member as t where t.id = ?
ok,这看起来是没有问题的,一切都很ok.
可事实上,这条hql执行时,它应该去根据哪个属性去查询呢?
凭感觉,它应该根据属性名称即“property name='id'”去做查询,因为非id属性就是如此;
可事实上,它却去根据oid即hibernate的id结点去查询.......
当然,这种情况是一种极特别的情况,被我遇到了而已..........
这也许不算bug,也许人家就是如此设计的吧....
一个简单的Pojo映射如下:
<hibernate-mapping package="cn.crazyasp.album.user">
<class name="Member" table="V_MemberDetail_info">
<id name="oid" type="long" column="MBDT_index">
<generator class="native" />
</id>
<property name="id" column="MBDT_MBUid" type="string"/>
<property name="name" column="MBDT_City" type="string"/>
</class>
</hibernate-mapping>
oid为自增long类型,id为guid,表中为string类型.
简单查询的hql为:from Member as t where t.id = ?
ok,这看起来是没有问题的,一切都很ok.
可事实上,这条hql执行时,它应该去根据哪个属性去查询呢?
凭感觉,它应该根据属性名称即“property name='id'”去做查询,因为非id属性就是如此;
可事实上,它却去根据oid即hibernate的id结点去查询.......
当然,这种情况是一种极特别的情况,被我遇到了而已..........
这也许不算bug,也许人家就是如此设计的吧....
评论
引用
forestking
这个不是bug,在Gavin King的书里明确的说过,在hql中使用的id就是指hbm中定义的id,也就是这里oid,不管这个id的名字是什么,这样其实是比较方便的,因为在你不知道id的名字的时候也可以用id。你的这种情况可能是具体的要求,可是我觉得完全没有必要有一个普通属性叫做id,这会造成误解的。
呵呵,你说的很对,但我这个是特殊需求,呵呵,本来用的就是id属性,同时也是hibernate的id结点(guid),但后来有人把表里增加了一列数字做自增pk,而我不想对代码做大的调整,所以用就把id做为普通属性了,然后又增加了oid..........
forestking
2008-05-12
回复
这个不是bug,在Gavin King的书里明确的说过,在hql中使用的id就是指hbm中定义的id,也就是这里oid,不管这个id的名字是什么,这样其实是比较方便的,因为在你不知道id的名字的时候也可以用id。你的这种情况可能是具体的要求,可是我觉得完全没有必要有一个普通属性叫做id,这会造成误解的。
发表评论
- 浏览: 32128 次
- 性别:

- 来自: 河北

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Lucene进阶:and 和or的条 ...
说到AND OR问题,借楼主宝地,发个贴: 默认关键字分割是OR,如果转成AN ...
-- by tonyson -
JProfiler4.2.2初探-注册 ...
楼主,请给我发一份破解文件,谢谢了。邮箱: sshzhangwg@163.com
-- by sshzhangwg -
深度技术GhostXP专业版V9 ...
还是V8.1版本成熟,速度很快,不错,可以一试!
-- by DavyLee -
2008年7月1日,盖茨离职 ...
不知道你的X年经验是几年,不过你确实缺少一些基础经验...
-- by e-ant -
2008年7月1日,盖茨离职 ...
引用这个是不是因为workspace中有eclipse的配置文件,删除那个.me ...
-- by DavyLee






评论排行榜