jpa generatedvalue 在哪里保存/如何增加它
jpa where is generatedvalue persisted / how to increase it
我刚进入一个项目,该项目使用 Spring 来持久化所有内容。对于 id 列,使用 @GeneratedValue。我使用 SQL 从另一个数据库导入数据,现在自动增加的生成值不同步。
使用 Spring 的后端在 Java Web Tomcat 7 服务器上是 运行,在 HANA 云平台上是 运行。
有人知道它在哪里保存生成的值以及我如何增加它以便它使用高于我通过 SQL 插入的 ID 的 ID?
非常感谢和亲切的问候,
tietze111
编辑:我们正在使用 HANA 数据库,这里是一些代码,希望这是您要找的:
public abstract class AbstractModel<ID extends Serializable> implements Serializable {
private static final long serialVersionUID = -3275552243704225648L;
@Id
@GeneratedValue
@JsonView(View.Summary.class)
protected ID id;
[...]
eclipse tooltip
编辑 2(更多信息,不知道是否有帮助?):
我们正在使用休眠,但问题是序列没有显示在系统中。有一个名为 SEQUENCE 的 table,但它只有一个固定的 SEQ_COUNT 属性。它的值始终为 50。SEQ_NAME 属性的值为 "SEQ_GEN"。 table 只有 1 个条目。这就是定义的样子 this。图片也显示没有顺序
解决方案:
在 Whosebug 上找到 this thread 并将生成策略更改为 GenerationType.TABLE 。现在我可以轻松更改 table 中的 ID。
这真是一道 SQL/DDL 题。
您需要查看数据库的 DDL 并找出序列名称是什么。然后你将不得不更新高值。 hibernate 中的默认名称是 hibernate_sequence,但您的名称可能因 JPA 提供程序而异。
alter sequence <sequence name> restart with <new starting value>;
如果您正在使用 auto_increment 列,您可以通过更改 table 来更新它。参见 http://www.tutorialspoint.com/sap_hana/sap_hana_sql_sequences.htm
在Whosebug上找到this thread关于生成策略的含义,将生成策略修改为GenerationType.TABLE。现在我可以轻松更改 table 中的 ID。
感谢 Neil Stockton,他的评论让我朝着这个方向前进!
我刚进入一个项目,该项目使用 Spring 来持久化所有内容。对于 id 列,使用 @GeneratedValue。我使用 SQL 从另一个数据库导入数据,现在自动增加的生成值不同步。
使用 Spring 的后端在 Java Web Tomcat 7 服务器上是 运行,在 HANA 云平台上是 运行。
有人知道它在哪里保存生成的值以及我如何增加它以便它使用高于我通过 SQL 插入的 ID 的 ID?
非常感谢和亲切的问候, tietze111
编辑:我们正在使用 HANA 数据库,这里是一些代码,希望这是您要找的:
public abstract class AbstractModel<ID extends Serializable> implements Serializable {
private static final long serialVersionUID = -3275552243704225648L;
@Id
@GeneratedValue
@JsonView(View.Summary.class)
protected ID id;
[...]
eclipse tooltip
编辑 2(更多信息,不知道是否有帮助?): 我们正在使用休眠,但问题是序列没有显示在系统中。有一个名为 SEQUENCE 的 table,但它只有一个固定的 SEQ_COUNT 属性。它的值始终为 50。SEQ_NAME 属性的值为 "SEQ_GEN"。 table 只有 1 个条目。这就是定义的样子 this。图片也显示没有顺序
解决方案: 在 Whosebug 上找到 this thread 并将生成策略更改为 GenerationType.TABLE 。现在我可以轻松更改 table 中的 ID。
这真是一道 SQL/DDL 题。
您需要查看数据库的 DDL 并找出序列名称是什么。然后你将不得不更新高值。 hibernate 中的默认名称是 hibernate_sequence,但您的名称可能因 JPA 提供程序而异。
alter sequence <sequence name> restart with <new starting value>;
如果您正在使用 auto_increment 列,您可以通过更改 table 来更新它。参见 http://www.tutorialspoint.com/sap_hana/sap_hana_sql_sequences.htm
在Whosebug上找到this thread关于生成策略的含义,将生成策略修改为GenerationType.TABLE。现在我可以轻松更改 table 中的 ID。
感谢 Neil Stockton,他的评论让我朝着这个方向前进!