通过注解指定 HSQLDB 身份的初始值

Posted

技术标签:

【中文标题】通过注解指定 HSQLDB 身份的初始值【英文标题】:Specify initial value of HSQLDB identity via annotation 【发布时间】:2011-02-14 16:25:55 【问题描述】:

我可以在 HSQLDB 数据库之上使用 Hibernate/JPA 注释指定 IDENTITY 列的初始值吗?到目前为止,相关的源代码如下所示:

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() 
    return id;

生成的 DDL 如下所示:

id bigint generated by default as identity (start with 1)

我想做的是通过注释使 ID 以 10,000 的值开头。

注意:这是一个新应用程序,所以我使用的是最新版本的 Hibernate 和 HSQLDB。

【问题讨论】:

【参考方案1】:

由于这个问题最初没有被标记为 Hibernate,因此 Hibernate 专家可能错过了它。我刚刚注意到 Hibernate HSQLDialect 为所有身份创建返回(从 1 开始)。因此可能没有办法覆盖它。

您应该研究如何在创建表之后但在添加数据之前执行 SQL 语句来重置标识。 SQL 看起来像:

ALTER TABLE hibernate_generated_table_name ALTER COLUMN id RESTART WITH 10000

【讨论】:

谢谢。安装我的生产代码后,它将运行一个手工编写的 DDL 脚本,因此那时我们将能够自定义“(start with)”子句。在开发阶段,当我们使用“hibernate.hbm2ddl.auto”自动创建/更新架构时,最好自定义身份的起始值。

以上是关于通过注解指定 HSQLDB 身份的初始值的主要内容,如果未能解决你的问题,请参考以下文章

valida校验关联参数、指定属性值

CSS - 初始值指定值计算值应用值实际值

各种注解

如何使用注解在 Spring JPA 中定义 HSQLDB 属性

springboot-注解讲解

在controller中无法通过注解@Value获取到配置文件中定义的值解决办法