gpt4 book ai didi

java - Hibernate 更新对象中的所有列

转载 作者:太空宇宙 更新时间:2023-11-04 08:00:33 25 4
gpt4 key购买 nike

我有以下方法使用 hibernate 更新数据库中的行。我想使用新对象更新表中的所有列。因此,我获取现有对象并将其所有属性设置为新对象的属性。

public void updatePlace(Place newPlace) {
Session session = factory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
Place place = (Place)session.createQuery("FROM Place AS plc WHERE plc.Id = " + newPlace.getId()).list().get(0);
place.setPhone(newPlace.getPhone());
place.setPKey(newPlace.getPKey());
place.setName(newPlace.getName());
place.setDetails(newPlace.getDetails());
session.update(place);
tx.commit();
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
}

在这种方法中,我一一更新所有列,如果有一天我添加新列,我必须记住更改此方法。

place.setPhone(newPlace.getPhone());
place.setPKey(newPlace.getPKey());
place.setName(newPlace.getName());
place.setDetails(newPlace.getDetails());

是否有更短的方法来使用 newPlace 对象更新列?

最佳答案

你最好使用 get 来获取对象 session 接口(interface)中的方法,然后更新对象的属性然后使用 update方法。即

Place place = (Place)session.get(newPlace.getId());
place.setPhone(newPlace.getPhone());
....

session.update(place);

关于java - Hibernate 更新对象中的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12881902/

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