通过注解指定 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 身份的初始值的主要内容,如果未能解决你的问题,请参考以下文章