`

这能否算Hibernate的Bug?

阅读更多
遇到一个非常奇怪的问题,感觉象hibernate的bug,即使不是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,也许人家就是如此设计的吧....
分享到:
评论
3 楼 DavyLee 2008-05-12  
引用

forestking 
这个不是bug,在Gavin King的书里明确的说过,在hql中使用的id就是指hbm中定义的id,也就是这里oid,不管这个id的名字是什么,这样其实是比较方便的,因为在你不知道id的名字的时候也可以用id。你的这种情况可能是具体的要求,可是我觉得完全没有必要有一个普通属性叫做id,这会造成误解的。


呵呵,你说的很对,但我这个是特殊需求,呵呵,本来用的就是id属性,同时也是hibernate的id结点(guid),但后来有人把表里增加了一列数字做自增pk,而我不想对代码做大的调整,所以用就把id做为普通属性了,然后又增加了oid..........
2 楼 forestking 2008-05-12  
这个不是bug,在Gavin King的书里明确的说过,在hql中使用的id就是指hbm中定义的id,也就是这里oid,不管这个id的名字是什么,这样其实是比较方便的,因为在你不知道id的名字的时候也可以用id。你的这种情况可能是具体的要求,可是我觉得完全没有必要有一个普通属性叫做id,这会造成误解的。
1 楼 wf_chn 2008-05-10  
把类代码贴出来看看

相关推荐

    hibernate的xml文件bug

    如果JBoss Tools在生成这些文件时出现bug,可能导致文件内容不正确,从而影响到Hibernate的正常工作。 1. **XML语法错误**:检查XML文件是否有语法错误,如未闭合的标签、缺失的属性、非法字符等。可以使用XML验证...

    Hibernate 3.2.4+ bug

    NULL 博文链接:https://imp9527.iteye.com/blog/438677

    Hibernate Synchronizer 插件重大缺陷改正

    标题与描述均提到了“Hibernate Synchronizer 插件重大缺陷改正”,这表明文章或讨论主要聚焦于解决在使用Hibernate Synchronizer插件时遇到的关键问题。Hibernate Synchronizer插件通常用于同步数据库操作,例如在...

    hibernate-release-5.2.10

    2. **配置**:Hibernate的配置文件(如hibernate.cfg.xml)中需要设置数据库连接信息、方言、缓存策略等,这是使用Hibernate的第一步。 3. **会话工厂与会话**:SessionFactory是线程安全的,负责创建Session对象,...

    HIbernate免注解实现操作数据库 及Hibernate3连接SQL的BUG解决办法

    5. **缓存问题**: Hibernate的二级缓存可能导致数据不一致。确保正确配置缓存策略,避免脏读或丢失更新等问题。 6. **配置错误**: 检查`hibernate.properties`或`hibernate.cfg.xml`文件中的配置项,确保所有必要的...

    hibernate 2 升级参考文档

    这是因为新版本包含了对新特性和改进的实现,以及可能存在的bug修复。确保新jar包包含所有必要的依赖,以避免运行时出现类找不到或版本冲突的问题。 接下来,需要更新Hibernate配置文件`Hibernate.cfg.xml`。在...

    hibernate-3.13.zip

    1. **hibernate3.jar**:这是 Hibernate 框架的核心库文件,包含了所有必需的类和接口,用于实现 ORM 功能。开发者可以直接将这个 JAR 文件引入项目中,以便利用 Hibernate 的功能进行数据库操作。 2. **lib** 目录...

    hibernate-release-5.3.7.Final

    标题中的"hibernate-release-5.3.7.Final"指的是Hibernate ORM框架的一个特定版本,这是Java领域中广泛使用的对象关系映射(ORM)工具。Hibernate允许开发人员使用面向对象的方式来操作数据库,极大地简化了Java应用...

    Hibernate 中文手册 3.2.pdf

    标签"Hibernate 3.2"提示了文档是围绕这个特定版本的框架展开的,这意味着手册中可能包含了该版本特有的API、改进的特性、修复的bug等信息。开发者在使用这个版本时应当参考这个手册来了解如何充分利用Hibernate 3.2...

    hibernate5.2.6-compiled

    **hibernate5.2.6-compiled** 这个标题表明我们正在讨论的是Hibernate ORM框架的一个特定版本,即5.2.6的编译版本。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发人员使用面向对象的方式来处理...

    hibernate4.2.1

    1. **新特性与改进**:Hibernate 4.2.1相比之前的版本可能引入了新的API、性能优化、bug修复以及对JPA规范的更好支持。例如,可能增强了对Java Persistence Query Language (JPQL)的支持,增加了更多的注解驱动的...

    hibernate各个版本下载地址

    ### Hibernate各版本简介与下载地址 #### 概述 Hibernate是一款开源的对象关系映射(ORM)框架,它为Java应用程序提供了强大的数据持久化支持。通过将对象模型与...希望本文能帮助您更好地理解和使用Hibernate。

    hibernate4.2.2最终版jar包

    在Hibernate 4.2.2版本中,主要改进了性能,增加了对JPA 2.1规范的支持,并修复了一些已知的bug。以下是一些关键知识点: 1. **对象关系映射(ORM)**:Hibernate的核心功能是ORM,它允许开发者用Java对象来代表...

    Hibernate的事务处理机制和flush方法的用法.docx

    在使用Hibernate进行数据库操作时,事务管理和`flush`方法的正确使用至关重要,因为它们直接影响到数据的一致性和安全性。在本文中,我们将深入探讨Hibernate的事务处理机制以及`flush`方法的用法,并分析为何在某些...

    hibernate-release-4.2.4.Final.zip

    Final标识意味着这个版本经过了充分的测试,不打算再有大的功能更新,主要关注bug修复和维护。 3. **ORM(对象关系映射)**:ORM是一种编程技术,它将数据库中的表映射为Java类,将行映射为类的实例,列映射为类的...

    hibernate资料 3.6.6版本

    在3.6.6这个版本中,可能会包含一些特定的功能、改进和修复的bug。 描述部分提到的是一个博客链接,虽然没有具体内容,但通常博客会提供关于如何使用Hibernate 3.6.6的教程、经验分享或者问题解决的方法。这个链接...

    hibernatetools-3.1.0.beta5

    《Hibernate Tools 3.1.0.beta5:Eclipse中的高效开发助手》 Hibernate Tools是...对于熟悉Hibernate的开发者来说,熟练掌握并利用这个插件,能显著提升其在JPA(Java Persistence API)和ORM领域的专业能力。

    Hibernate Synchronizer2.3.1.rar

    Hibernate Synchronizer,这个名字在Java开发领域中或许并不陌生,它是一款针对Hibernate框架的强大工具,旨在简化对象关系映射(ORM)过程中的数据库同步工作。在Hibernate Synchronizer 2.3.1版本中,开发者可以...

    Hibernate3.2连接池

    它默认的连接池在处理大量请求或需要高容错能力的应用场景下表现不佳,可能存在BUG。尽管如此,配置方法如下: ```xml &lt;property name="hibernate.connection.pool_size"&gt;5 ``` 2. **配置第三方连接池** - **...

    hibernate新版本

    这强调了及时更新技术栈的重要性,因为旧版本可能存在的安全问题或bug得不到修复,同时也无法享受到新功能带来的便利。 标签里提到了"hibernate-validator-4.1.0.Beta1-dist.tar.gz",这是Hibernate验证器的一个...

Global site tag (gtag.js) - Google Analytics