在spring data jpa应用程序中,我创建了一个带有@entity注释的模型。我正在将该模型数据保存到表中。我正在自动递增主键。但当我将数据保存到表中时,它不是按顺序自动递增的。
@GeneratedValue(strategy = GenerationType.AUTO)
类文件
@Entity
@Table(name="exception")
public class Exception implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "exception_seq_generator")
@SequenceGenerator(name = "exception_seq_generator", sequenceName = "exception_seq")
@Column(name="exception_id")
public Integer exceptionId;
@Column(name="status_code")
public Integer statusCode;
public String message;
public String status;
public String error;
//Getter and setter
桌子
谁能告诉我为什么主键没有按顺序自动递增?为什么它不需要2,3,4......
首先尝试设置allocationSize:
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "exception_seq_generator")
@SequenceGenerator(name = "exception_seq_generator", sequenceName = "exception_seq", allocationSize=1)
@Column(name="exception_id")
public Integer exceptionId;
还要检查数据库中的当前序列,它现在可能有一个错误的值。
更简单的方法:
将PostgreSQL数据库中的主键列定义为串行:
CREATE TABLE xy (
id SERIAL PRIMARY KEY;
);
并用以下内容注释该列:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
SERIAL类型为您创建一个自动递增序列,您的JPA实体中没有那么多开销。
问题内容: 我正在尝试添加具有自动增量的主键。 我已经阅读了一些文档和其他问题-有和声明,但是不起作用。 这是我做的: 和 我怎么了 我只想将主键增加1。 问题答案: 是或多或少是一种列类型,所以说就像说,只是说: 如果您想自己创建序列,那么您想将序列中下一个值的默认值设为默认值,这意味着: 为了模拟通常的行为,您还需要使表拥有该序列: 阅读手册的“串行类型”部分可能会很有成果。 我还建议您不要对
问题内容: 我有一个带有自动递增主键的MySQL表。我删除了表中间的一些行。例如,现在在ID列中有类似的内容:12、13、14、19、20。我删除了15、16、17和18行。 我想重新分配/重置/重新排序主键,以便保持连续性,即将19设为15,将20设为16,依此类推。 我该怎么做? 问题答案: 您可以删除主键列并重新创建它。然后应按顺序重新分配所有ID。 但是,在大多数情况下,这可能不是一个好主
我将向一个SQL Server表中添加一行,该表的主键列是自动递增的(< code>identity)。当我以编程方式向表中插入一个新行时,有没有办法获得所添加行的键值,因为我想在另一个相关表中将它用作外键?
问题内容: 我的页面上有一些div,编码为 现在,单击任何一个div,就会进行AJAX调用,将动态列表返回为: 我想在第一次AJAX调用之后将上述动态列表存储在localStorage中。所以我写; 现在,在下一页加载中,我想在DOM的正确位置附加所有dynamicList(所有用户之前单击的那些)(因此,在下次单击期间不会对数据进行AJAX调用) 现在似乎在localStorage的顺序中出现了
问题内容: 这可能在MySql中吗?我可以有一个以字母为前缀的自动递增主键,例如R1234,R1235,R1236 …等等吗? 问题答案: 您可以做的是将密钥存储为两列。一个char前缀和一个auto-incrementing int,它们都被分组为主键。
问题内容: 某些SQL Server允许使用通用语句,例如。我认为这不适用于MySQL,是否有任何这样的解决方法可以跨多个表进行自动选择,还是需要使用查询查询来确定主键? 我一直在解决的方法是在运行查询之前调用。有更有效的方法吗?在选择过程中,MySQL可以确定表的主键吗? 更新: 正如Gordon所指出的那样,通常在MySQL或SQL中没有官方的方式来执行此操作。SAP具有自定义功能。有一些解决