1

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

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 对象更新列?

4

1 回答 1

1

您最好在会话界面中使用get方法获取对象,然后更新对象的属性,然后使用更新方法。IE

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

session.update(place);
于 2012-10-14T11:53:05.323 回答