方法如下:
 
              createCriteria()方法 List results = getSession().createCriteria(entityName).add(
Example.create(instance)).list();
log.debug("find by example successful, result size: "
+ results.size());
return results;  
              merge()方法                       T result = (T) getSession().merge(detachedInstance);
log.debug("merge successful");
return result;
               lock()方法
                         getSession().lock(instance, LockMode.NONE);
log.debug("attach successful");
      望大家给我详细点解释,本人接触hibernate不是很长时间,很多方法都没用过

解决方案 »

  1.   

    createCriteria():创建hibernate的qbc查询,试用动态多组合的查询方式,支持hql,sql等。
     merge():merge作用大致相当于saveorupdate这个方法, 即有唯一性标识, 则运行save, 没有则运行update.
    lock():执行lock()方法时,会立即使用查询语句查询版本号进行版本检查,并不会执行一个update操作。
      

  2.   

    createCriteria()方法  创建查询接口。不推荐这种方法,createQuery()方法为官方推荐方法merge()方法:这个没用过,不知道什么用lock()方法 :与线程有关的吧,一般出现在hibernate自动生成的DAO层中
      

  3.   

    merge() 
    这个方法还有一个作用就是当开起了一个session后,如果再试图开启一个session操作数据库时,如使用savaOrupdate方法的话就会出错,这时可以用merge()方法
      

  4.   

    楼上的都解析的很正确  我就加一点补充吧
     createCriteria()方法 这个方法很少用基本上都是用createQuery()
    merge()方法会导致执行查询group对象的select语句,在调用merge()命令时立即执行(条件:目标group对象没有被缓存)
    lock()方法与update()方法的区别
    在执行lock()方法时,会立即使用查询语句查询版本号进行版本检查,并不会执行一个update操作。
    而update()方法,并不会进行版本检查,知道session.flush()时候,会先进行版本检查,再进行更新操作。
    这两个方法都把一个有理对象与一个session实例关联起来