これが私のような人に役立つことを願っています
1つのフィールドを直接更新すると、他のすべてのフィールドがデフォルト値に設定されます。
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
User user = new User();
user.password("xxxxx");
session.update(user);
tx.commit();
session.close();
上記のコードは、他のすべてのフィールドをデフォルト値に設定します。したがって、これを回避するには、テーブルからオブジェクトをフェッチしてから、それを変更して更新操作を実行する必要があります。
session.load
またはを使用session.get
してオブジェクトをフェッチし、更新することができます。
コード:
User u = session.load(User.class, userName);
u.setPassword(newPassword);
また
User u = session.get(User.class, userName);
u.setPassword(newPassword);
その後、実行する必要がありますsession.update(user)
完全なコード:
SessionFactory factory = hibernateUtils.getSessionFactory();
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
User user = session.load(User.class, username);
user.setPassword("xxxxxx");
session.update(user);
tx.commit();
session.close();