【问题标题】:Altered AutoIncrement Id not being used in MySql + Hibernate在 MySql + Hibernate 中未使用更改的 AutoIncrement Id
【发布时间】:2012-07-15 02:09:27
【问题描述】:

我使用 Hibernate 和 mySql。

我已经定义了db脚本如下:

CREATE TABLE `Foo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `version` int(11) NOT NULL DEFAULT '0',
  `data` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
ALTER TABLE Foo AUTO_INCREMENT = 34324;

这是我的休眠映射:

<class name="org.xyz.Foo" table="Foo">
    <cache usage="read-write"/>
    <id name="id" column="id">
         <generator class="increment"/>
    </id>
    <version name="version" column="version"/>
    <property name="data" column="data"/>
</class>

问题:插入不遵守设置为 34324 的 AutoIncrement Id。正如我所料,插入的 ID 从 1 而不是 34324 开始。 我没有自己设置 ID。

【问题讨论】:

    标签: mysql hibernate insert auto-increment


    【解决方案1】:

    根据您的休眠映射首选生成策略是increment。这意味着 Hibernate 产生了价值。但是根据 DDL 列应该是 AUTO_INCREMENT,这意味着值是由 MySQL 分配的。

    如果 AUTO_INCREMENT 是您想要的,解决方案是使用以下 Hibernate 映射:

    <generator class="identity"/>
    

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 2013-12-10
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 2012-02-08
      • 2012-05-29
      • 1970-01-01
      • 2011-10-20
      相关资源
      最近更新 更多