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();
    }
}

このメソッドでは、すべての列を 1 つずつ更新します。ある日、新しい列を追加する場合は、このメソッドを変更することを忘れないでください。

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

newPlace オブジェクトを使用して列を更新するより短い方法はありますか?

4

1 に答える 1

1

セッションインターフェイスでgetメソッドを使用してオブジェクトを取得してから、オブジェクトのプロパティを更新してから、updateメソッド使用することをお勧めします。すなわち

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

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