希望这可以帮助像我这样的人
如果我们直接对一个字段进行更新,它会将所有其他字段设置为其默认值。
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();