【问题标题】:Hibernate's generator class not really working?Hibernate 的生成器类没有真正工作?
【发布时间】:2011-06-23 16:54:03
【问题描述】:

在对我和我的 Eclipse 感到沮丧数小时后在这里提出这个问题。希望能在这里找到一点喘息的机会。

我正在尝试通过 Hibernate 3.0 将 pojo 对象保存到 MySQL 数据库中。基本上我的要求是:我需要在保存之前为对象分配 id,而不是让 Hibernate 为我做。

为此,我查阅了文档,发现<generator class="assigned"/> 完全符合我的要求。因此,我通过.hbm.xml 文件更新了id 的以下内容:

<id name="id" type="int">
    <column name="ID" />
    <generator class="assigned" />
</id>

我的 pojo 将 .hbm.xml 文件与 T 匹配。

我正在设置所有参数,包括我的 pojo 的 ID 并调用 Hibernate 的 saveOrUpdate(object) 方法。

如果有任何帮助,我的数据库表的ID 列已禁用“auto-inc”。

令人难以置信的是,当我查看数据库表内容时,已经插入了一行使用 Hibernate 自己的 ID 而不是我设置的 ID。

这怎么可能?还有什么影响ID的吗?我错过了什么吗?有什么解决办法?

我的hibernate.properties 如下所示(如果有帮助的话):

hibernate.connection.driver_class =com.mysql.jdbc.Driver
hibernate.dialect =org.hibernate.dialect.MySQLDialect
hibernate.connection.url =jdbc:mysql://localhost/dbdbdbdbdb
hibernate.connection.username=root
hibernate.connection.password=password
hibernate.connection.pool_size=10
jdbc.batch_size=30
hibernate.show_sql=true
hibernate.current_session_context_class=true
hibernate.hbm2ddl.auto=validate
hibernate.cglib.use_reflection_optimizer=false
hibernate.generate_statistics=true
hibernate.cache.use_query_cache=true
hibernate.cache.region.factory_class=net.sf.ehcache.hibernate.EhCacheRegionFactory

【问题讨论】:

  • Java 人群正在死去?到目前为止只有 6 次观看。 :(
  • @pavanlimo:提示:声称某些(广泛使用的)库或其功能之一只是“不起作用”不太可能导致许多观点(或答案,就此而言)。询问为什么它对您不起作用可能会更受欢迎。
  • 因为问题已被证明是错误的(正如您在下面发布的那样)。人们现在试图解决你的(不存在的)问题只会浪费他们的时间。
  • 我认为他们(人们)会像我一样尝试用谷歌搜索,只是意识到问题可能出在他们的 IDE 上(当然是在访问此页面之后)。我认为我们在这里很严格:)。但是,如果你们所有人 (5) 都认为这个问题是“模棱两可的”,那么请继续并关闭它。
  • @pavanlimo:请不要理解这是对你的攻击。这个问题是精心制定和提出的。只是问题中的信息与最终解决方案无关(确保 Tomcat 使用最新版本的源代码)。因此,它具有误导性,在目前的讨论中无法回答。

标签: java hibernate


【解决方案1】:

好吧,恶作剧警报! Eclipse-Tomcat 集成确实是一个问题。在hbm 文件生效之前,我必须清理Tomcat 的目录并重新发布。

提示:如果您在 Eclipse 中运行 ant,请确保不时刷新 Eclipse 工作区。艰难地学习一些东西。

【讨论】:

    【解决方案2】:

    您可以编写自定义序列生成器类以返回适合您要求的 ID。更多详情请关注:http://danu-javastuff.blogspot.com/2009/01/custom-id-generator-class-for-hibernate.html

    【讨论】:

      猜你喜欢
      • 2017-09-30
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多