gpt4 book ai didi

java - 使用 JPA 更新数据库记录的问题

转载 作者:行者123 更新时间:2023-11-30 09:53:20 25 4
gpt4 key购买 nike

我在数据库中有一个对象,其值如下:

  • id =1
  • 姓名=“约翰”
  • chargeid = 6

我正在使用合并语句来更新代码em.merge(obj)

当我看到 JPA 生成的查询时,我发现在更新查询中,只有具有新值或非空值的字段才会被更新。

我检查了这个对象关联的bean,发现没有和chargid关联的注解

现在,当我尝试更新此 JPA 时,如果我不将任何值设置为 null,它就会正确更新。现在,如果我设置 chargeid= null,然后尝试将其设置为 persist 到 db,它确实会在 db 中更改为 null,但它会保留以前的值。怎么会这样?

详情如下1 在数据库中有如下记录

ID     Name   chargeID
1 john 5

现在如果我将对象的值设置为

obj.setID(1),
obj.setName("johnNew")
obj.setchargID(6)
entinymanager.merge(obj)

然后记录更新如下,没问题

Id  name      chargeid
1 johnNew 6

现在如果我想将 chargeid 设置为 null 我使用代码

obj.setId(1)
obj.setName('XYZ')
obj.setChargeId(null); // i want to update it as null.

现在记录将更新如下

id  name  chargeid
1 XYZ 6 //name is updated to XYZ,but chargeid is not updated to null, how come?


i want to set chargeid to null.

最佳答案

另一种方法是在合并方法执行后将对象设置为 NULL,如下所示:

obj.setchargID(6)
obj = entinymanager.merge(obj)
obj.setchargID(null)

关于java - 使用 JPA 更新数据库记录的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3869543/

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