作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在将对象从 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/
我是一名优秀的程序员,十分优秀!