【问题标题】:Hibernate Generation Type for SQL Server and OthersSQL Server 和其他的休眠生成类型
【发布时间】:2020-01-06 05:46:53
【问题描述】:

我编写的程序使用不同的数据库,如 sql server、oracle 等。我的问题是我无法处理 GenerationType 并将正确的行插入表中。在 sql server 中使用 GenerationType.AUTO 和 hibernate.id.new_generator_mappings := false,我的程序能够将新行插入表中,但 ID 始终为空,同样的问题是 GenerationType 为 IDENTITY。

我尝试仅为 sql server 添加自动增量,但 Liquibase 对我大喊,mssql 不支持它。当我使用 Sequences for Oracle 以及 SQL Server 时,我的程序试图从生成器中获取“下一个值”,但它不能并且执行无限循环。即使我为 ID 设置了默认值,它也不会增加这个值。

这是我的代码:

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "name")
@SequenceGenerator(name = "name", sequenceName = "SEQ", allocationSize = 1)
private Long id;

我希望能够将自动递增索引添加到表中,它应该适用于 SQL Server 数据库,我不想使用 Table 策略进行生成,因为它需要在 db 中添加额外的表。

【问题讨论】:

    标签: java sql-server oracle hibernate auto-increment


    【解决方案1】:

    问题解决了。我在 Liquibase xml 文件中添加条件,检查 db 是否是 mssql 类型,如果它是真的,脚本会删除 ID 列并使用 IDENTITY(1,1) 选项添加它。

    唯一的问题是现在我必须切换前面提到的“hibernate.id.new_generator_mappings”设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 2012-03-26
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      相关资源
      最近更新 更多