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

发布于 2024-10-17 11:42:36 字数 388 浏览 5 评论 0原文

我可以在 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。

Can I specify the initial value for an IDENTITY column using Hibernate/JPA annotations on top of an HSQLDB database? The relevant source code looks like this so far:

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

The generated DDL looks like this:

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

What I'd like to do is make the ID start with a value of 10,000 via annotations.

Note: This is a new application so I'm using the latest versions of Hibernate and HSQLDB.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

德意的啸 2024-10-24 11:42:36

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

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

ALTER TABLE hibernate_generated_table_name ALTER COLUMN id RESTART WITH 10000

As this question was not initially tagged as Hibernate, it was probably missed by Hibernate experts. I just noticed the Hibernate HSQLDialect returns the (start with 1) for all identity creation. Therefore there is probably no way to override this.

You should be looking into how to execute an SQL statement to reset the identity AFTER the table is created but before data is added. The SQL looks like:

ALTER TABLE hibernate_generated_table_name ALTER COLUMN id RESTART WITH 10000
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文