我们目前正在从 MSSQL 迁移到 Oracle,我们不想对所有表使用 hibernate_sequence。每个表都应该有自己的序列。
我们已经在我们的测试环境中进行了更改,但是如果我们的解决方案可以安全使用,我想获得一些额外的信息。
我们的大多数类都是从 baseentities 扩展而来的,但我们也有几个独立的实体。
我们改变了什么:
-baseentities(@MappedSuperclass):
changed: @GeneratedValue(strategy = GenerationType.AUTO)
to: @GeneratedValue(strategy = GenerationType.AUTO, generator = "HIBERNATE_GENERATOR")
- 扩展实体:
added after the @Table annotation:
@SequenceGenerator(name = "HIBERNATE_GENERATOR", sequenceName = "${TABLENAME}_SEQ")
-独立实体:
在@Table 注释之后添加:
@SequenceGenerator(name = "HIBERNATE_GENERATOR", sequenceName = "${TABLENAME}_SEQ")
changed : @GeneratedValue(strategy = GenerationType.AUTO)
to: @GeneratedValue(strategy = GenerationType.AUTO, generator = "HIBERNATE_GENERATOR")
所以我们总是使用相同的生成器名称“HIBERNATE_GENERATOR”,只是序列名称不同。我们的应用程序似乎运行良好,但始终使用相同的生成器名称是否安全?