【问题标题】:Spring Hibernate JPA Bidirectional OneToOne - not updating id on deleteSpring Hibernate JPA 双向 OneToOne - 删除时不更新 id
【发布时间】:2019-12-11 10:24:34
【问题描述】:

我在 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) 从数据库中删除第一个 StudentInfo 实例(id=1)时; ,实例确实会被删除,与之关联的 User 也会被删除,但问题是数据库中其他对象的 id 没有得到更新。

删除一个学生后,数据库中的用户如下所示:

剩下的学生(只有一个):

我怎样才能使 id 在 delete 时自动更新?

(2, 3, 4) -> (1, 2, 3)。

【问题讨论】:

  • 问题是数据库中其他对象的 id 没有更新。我不知道你为什么会期望这样的事情发生。跨度>
  • @AlanHay 我也调查过。事实上,我不应该期望这会发生。感谢您的时间 !另外:我是新手,我不知道如何结束这个问题
  • 无需关闭问题。虽然对于有经验的用户来说答案是显而易见的,但它仍然是一个有效的问题。发布您自己的答案,其中包含您学到的内容并接受它(我认为您必须等待 3 天左右)。
  • @JensSchauder 谢谢你的提示。我就是这么做的

标签: java hibernate jpa spring-data-jpa one-to-one


【解决方案1】:

显然这是一个非常愚蠢的问题,因为虽然数据库中的 id 对于表中的每一行都必须是唯一的,但它们不必是连续的。

因此,当删除数据库表中的注册表(一行)时,其他注册表的 ID 不会更新,因为不需要它。这对所有的sql数据库都是如此,与Spring或JPA无关。

【讨论】:

    猜你喜欢
    • 2021-07-14
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2019-08-12
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多