为什么我的H2自动增量色谱柱在升级到Hibernate5后没有回滚

时间:2018-06-12 08:55:47

标签: java spring hibernate spring-data-jpa hibernate-mapping

从Hibernate 3.6升级到5.2。一些旧的测试已经停止工作,其中一个是在插入前后的自动增量列中比较max id(max(id)之前应该是max(id)+1之后)。

我们使用H2作为内存数据库,我们还没有升级H2。

我们的问题是以前,当测试由于某种原因回滚时,数据库中的行当然被删除了,但是自动增量列也被重置了,所以如果执行插入但是失败了(例如由于某些约束),下次生成的自动增量ID将是相同的。

升级到5后,情况不再如此,我无法理解原因。

我们必须从

更改ID列
@GeneratedValue(strategy = GenerationType.AUTO)

@GeneratedValue(     
    strategy = GenerationType.AUTO,
    generator = "native")
@GenericGenerator(
    name = "native",
    strategy = "native")

(好解释here

我已经尝试调试Hibernate" IdentifierGeneratorHelper",它似乎只返回插入后来自H2的int。但H2并没有改变!

指针会很棒。

免责声明:我知道你不应该依赖autoincrement int值。这些是旧的测试,我只是想确保我理解Hibernate5带来的所有更改。

0 个答案:

没有答案