gpt4 book ai didi

java - 如何合并而不覆盖不在参数(JPA)中的列?

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

我有一个表叫

Customer

Custid:
Custusername:
Custaddr:
CustDateOfBirth:

现在,我有一个更新参数,希望用户仅更新“Custusername,Custaddr”,更新出生日期没有意义(因此在注册后,它是永久的)。

所以我做了这样的事情:

Customer.setCustid(Custid);
Customer.setCustaddr(Custaddr);
Customer.setusername(Custid);

然后我使用实体管理器:

em.merge(Customer);

所以发生的事情是,细节得到更新但是! Dateofbirth 现在在数据库中为空,尽管我没有为其设置任何参数。

我之前这样做过,但是该方法返回 true 并且没有做任何更改:

//The Set statements are above
emm.getTransaction().begin();
try {
emm.merge(emm.find(Customer.class, Custid);
emm.getTransaction().commit();
return true;
} catch (Exception e) {
emm.getTransaction().rollback();
System.out.println( e);
return false;
}

最佳答案

你是如何创建你的客户的?你需要通过 id 找到客户,然后更改它并将其合并回 db

 Customer c = em.find(Customer.class, id);
c.setCustaddr(custaddr);
em.merget(c);

现在您正在创建全新的实体并将其与旧实体合并,所有字段都被数据库中的这个新实体覆盖是合乎逻辑的。

关于java - 如何合并而不覆盖不在参数(JPA)中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22783891/

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