[英]JPA save() can't get the last ID from an existing table
当我保存一个新实体时,它的主键 ID 按预期从 1 开始保存。 但是在我实现 JPA 之前,桌子上有几行。
实体.class:
@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Table(schema = "db", name = "table")
public class Entity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
}
示例:假设有 10 行。 我.save()
一个新实体,它使用id = 5
保存,当然我得到一个例外。
我是否需要继续保存,直到生成的 ID 给出 + 10 数字。 这是正常的吗? @GeneratedValue
不能从表中获取最后一个 id 并 +1 本身吗?
问题出在自动生成的 ID 上。 因为在实现 JPA 之前我确实在表上有行,所以自动增量从 1 开始。
通过修改自动递增序列修复:
SELECT SETVAL('table_id_seq', (SELECT MAX(id) + 1 FROM table));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.