用Hibernate做数据更新,怎么只更新部分字段
2个回答
展开全部
上述回答是错误的,Hibernate已经内置了部分字段更新机制,只是大家没有深入了解Hibernate的机制,说了很多关于Hibernate的不好,个人认为Hibernate比所谓的iBatis好过百倍。
//说明: 这里修改密码实现的部分更新,而不是全部字段的更新。
//(1) 实现部分的更新方法是:
// 1) 从数据库中查询到实体。
// 2)将待更新数据字段设置到查询到实体上,执行save或update方法,则可实现部分字段。
// Account account = (Account) session.get(Account.class,accountID);
// account.setPassword("new password");
// session.update(account); //可实现部分更新
// session.save(account); //可实现部分更新
//(2)如何待更新的实现不是来源数据,则无法实现部分字段更新,如
// Account aaa = new Account();
// aaa.setPassword("new password");
// aaa.setAccountID(accountID);
// session.save(aa); //不可实现部分更新
// seesion.update(aa); //不可实现部分更新
//
//(3) 通过对象方式传递修改的参数
//
// Account sssAccount = new Account();
// sssAccount.setAccountID(accountID); //
// sssAccount.setPassword(password); //
//
// Account account = (Account) session.get(Account.class, accountID);
//
// DbUility.copyPropertiesIgnoreNull(sssAccount, account);
// session.update(account);
//
// 上述方式也可实现部分字段更新
// 注意,若拷贝前后account的password值不变,则不会更新该字段,对于accountID也是一样的。
//说明: 这里修改密码实现的部分更新,而不是全部字段的更新。
//(1) 实现部分的更新方法是:
// 1) 从数据库中查询到实体。
// 2)将待更新数据字段设置到查询到实体上,执行save或update方法,则可实现部分字段。
// Account account = (Account) session.get(Account.class,accountID);
// account.setPassword("new password");
// session.update(account); //可实现部分更新
// session.save(account); //可实现部分更新
//(2)如何待更新的实现不是来源数据,则无法实现部分字段更新,如
// Account aaa = new Account();
// aaa.setPassword("new password");
// aaa.setAccountID(accountID);
// session.save(aa); //不可实现部分更新
// seesion.update(aa); //不可实现部分更新
//
//(3) 通过对象方式传递修改的参数
//
// Account sssAccount = new Account();
// sssAccount.setAccountID(accountID); //
// sssAccount.setPassword(password); //
//
// Account account = (Account) session.get(Account.class, accountID);
//
// DbUility.copyPropertiesIgnoreNull(sssAccount, account);
// session.update(account);
//
// 上述方式也可实现部分字段更新
// 注意,若拷贝前后account的password值不变,则不会更新该字段,对于accountID也是一样的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询