方法如下:
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不是很长时间,很多方法都没用过
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不是很长时间,很多方法都没用过
merge():merge作用大致相当于saveorupdate这个方法, 即有唯一性标识, 则运行save, 没有则运行update.
lock():执行lock()方法时,会立即使用查询语句查询版本号进行版本检查,并不会执行一个update操作。
这个方法还有一个作用就是当开起了一个session后,如果再试图开启一个session操作数据库时,如使用savaOrupdate方法的话就会出错,这时可以用merge()方法
createCriteria()方法 这个方法很少用基本上都是用createQuery()
merge()方法会导致执行查询group对象的select语句,在调用merge()命令时立即执行(条件:目标group对象没有被缓存)
lock()方法与update()方法的区别
在执行lock()方法时,会立即使用查询语句查询版本号进行版本检查,并不会执行一个update操作。
而update()方法,并不会进行版本检查,知道session.flush()时候,会先进行版本检查,再进行更新操作。
这两个方法都把一个有理对象与一个session实例关联起来