gpt4 book ai didi

java - 如何更新对象 hibernate

转载 作者:行者123 更新时间:2023-11-29 13:40:08 25 4
gpt4 key购买 nike

我在将对象从 java 代码更新到 postgresql 时遇到问题。当我更新对象时,我遇到了 id 问题,因为 id 为空。因此在数据库中创建一个新行而不是覆盖同一行。看起来,数据库中的行:

id = 1
name = "name"
then I'm sending a json, like:
{
name: "newName"
}

然后我得到了新行,看起来:

id = 1, name = "name"
id = 2, name = "newName"

这是因为当我发送一个 json 时,id 为空,所以 postgresql 正在创建一个新行,但我想用 id = 1 覆盖该行。在 @OneToOne(orphanRemoval = true) 中添加的解决方案之一,但我不喜欢它,因为它会删除旧 ID,然后创建新 ID。如果我没有 ID,如何覆盖初始行?

谢谢!

class A{
@Id
@GeneratedValue
UUID id;

@OneToOne(mappedBy = "A", cascade = CascadeType.ALL)
B b;
}

class B{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;

@OneToOne(optional = false)
@JoinColumn(name = "A_id")
A a;
}

updatedA.setInfo(jsonSend.getInfo());

最佳答案

将 id 发送给客户端,当它调用 put/post 时,将其发回。如果没有它,您将不知道应该更新哪条记录(这是常规解决方案)。其他解决方案,如果名称是唯一/自然 ID(我不这么认为),您也可以发布旧名称和新名称。然后选择旧名称的记录,更新对象并保存。

关于java - 如何更新对象 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56878472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com