Spring Hibernate JPA 双向 OneToOne - 删除时不更新 id
Spring Hibernate JPA Bidirectional OneToOne - not updating id on delete
我在 OneToOne 关系中有 2 个实体:
一个用户实体:
@Entity
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToOne
@JoinColumn()
private StudentInfo studentInfo;
}
还有一个 StudentInfo 实体:
@Entity
public class StudentInfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToOne(cascade = CascadeType.REMOVE)
@JoinColumn()
private User user;
}
当我使用 studentRepository.deleteById((long) 1)
从数据库(id=1)中删除第一个 StudentInfo 实例时; ,实例确实被删除了,与之关联的用户也被删除了,但问题是数据库中其他对象的 ID 没有得到更新。
删除学生后,数据库中的用户如下所示:
剩下的同学(只有一个):
如何让 ID 在删除时自动更新?
(2, 3, 4) -> (1, 2, 3).
显然这是一个非常愚蠢的问题,因为虽然数据库中的 ID 对于 table 中的每一行都必须是唯一的,但它们不必是连续的。
因此,当数据库 table 中的注册表(一行)被删除时,其他注册表的 ID 不会更新,因为不需要它。这适用于所有 sql 数据库,与 Spring 或 JPA 无关。
我在 OneToOne 关系中有 2 个实体:
一个用户实体:
@Entity
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToOne
@JoinColumn()
private StudentInfo studentInfo;
}
还有一个 StudentInfo 实体:
@Entity
public class StudentInfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToOne(cascade = CascadeType.REMOVE)
@JoinColumn()
private User user;
}
当我使用 studentRepository.deleteById((long) 1)
从数据库(id=1)中删除第一个 StudentInfo 实例时; ,实例确实被删除了,与之关联的用户也被删除了,但问题是数据库中其他对象的 ID 没有得到更新。
删除学生后,数据库中的用户如下所示:
剩下的同学(只有一个):
如何让 ID 在删除时自动更新?
(2, 3, 4) -> (1, 2, 3).
显然这是一个非常愚蠢的问题,因为虽然数据库中的 ID 对于 table 中的每一行都必须是唯一的,但它们不必是连续的。
因此,当数据库 table 中的注册表(一行)被删除时,其他注册表的 ID 不会更新,因为不需要它。这适用于所有 sql 数据库,与 Spring 或 JPA 无关。