码迷,mamicode.com
首页 > Web开发 > 详细

使用Hibernate框架来更新对象的注意事项

时间:2015-06-08 21:23:11      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

Hibernate在更新对象的时候,如果对象的有些属性没有设置,那么在更新的时候,会被默认为空。
特别在更新表单对象的时候。
例子:
如: Department部门类
该部门类有以下属性: 
id : Long 
name : String (注:部门名称)
description : String  (注:部门说明)
parent : Department  (注:上级部门)
children : Set<Department> (注:下级部门)

修改页面表单: 除了children属性没有提供设置外,其他属性都有相应的输入框等进行设置(其中id是隐藏字段)。
技术分享技术分享
那么该页面提交到的页面表单对象是只包含了id, name , description , parent 的实体,如果直接使用该对象进行更新的话,那么就会使得该对象修改之前的children属性为空。
也就是说,如果该“开发部门”对象,通过session.update(department)后,“开发部门”对象下的“研发组”,“编程组”等下级部门就变成了没有上级部门的部门。
如果需要只改变“开发部门”部门对象的name属性和description、parent属性,而不改变原有的“children”属性,那么,我们就要使用以下的方法来进行更新,而不是直接更新。
首先,通过页面表单传递过来的“开发部门”部门的id进行查找在数据库中的该持久化对象;
然后,通过给该持久化对象的name,description,parent 属性进行set()方法赋值;
最后,使用session.update()方法,更新该持久化对象,那么就会只更新了该持久化对象的name,description,parent属性。而不改变原有的children属性。

session更新对象的参考代码:
  1. SessionFactory sessionFactory = new SessionFactory();
  2. Session session = null;
  3. try{
  4. session = sessionFactory.openSession();
  5. session.beginTranscation();
  6. session.update(entity);
  7. session.getTransaction().commit();
  8. }catch(Exception e){
  9. session.getTransaction().rollback();
  10. }finally{
  11. session.flush();
  12. session.close();
  13. }





使用Hibernate框架来更新对象的注意事项

标签:

原文地址:http://www.cnblogs.com/JamKong/p/4561828.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!