JPA 序列生成器生成意外 ID
JPA sequence generator generates unexpected ID
当我尝试创建实体时
getEntityManager().persist(entity);
我有以下异常
Internal Exception: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "pkproperty"
Detail: Key (id)=(191375) already exists.
我不明白它从哪里取这个 ID 值。我的数据库中只有一个序列,在我执行实体创建之前它的值为 191418。
此实体的 ID 描述是
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_id")
@Basic(optional = false)
@Column(name = "id")
private Long id;
并且在数据库中我已经创建了序列 seq_id
有没有可以使用的默认顺序?如果是,我该如何检查它的价值?
你可以不按顺序做同样的事情,参考下面的代码。您的 pk 列应该是自动递增的,自动递增应该从 191418 开始。
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", unique=true, nullable=false)
private Long id;
JPA 中设置的序列分配必须与数据库中使用的分配大小相匹配,否则您将在分配期间出现不匹配。尝试在 SequenceGenerator 定义中指定 allocationSize=1:
@SequenceGenerator(名称="seq_id", allocationSize=1)
当我尝试创建实体时
getEntityManager().persist(entity);
我有以下异常
Internal Exception: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "pkproperty"
Detail: Key (id)=(191375) already exists.
我不明白它从哪里取这个 ID 值。我的数据库中只有一个序列,在我执行实体创建之前它的值为 191418。
此实体的 ID 描述是
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_id")
@Basic(optional = false)
@Column(name = "id")
private Long id;
并且在数据库中我已经创建了序列 seq_id
有没有可以使用的默认顺序?如果是,我该如何检查它的价值?
你可以不按顺序做同样的事情,参考下面的代码。您的 pk 列应该是自动递增的,自动递增应该从 191418 开始。
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", unique=true, nullable=false)
private Long id;
JPA 中设置的序列分配必须与数据库中使用的分配大小相匹配,否则您将在分配期间出现不匹配。尝试在 SequenceGenerator 定义中指定 allocationSize=1:
@SequenceGenerator(名称="seq_id", allocationSize=1)