Hibernate不调用update却自动更新

来源:互联网 发布:虚拟物品淘宝怎么退款 编辑:程序博客网 时间:2024/05/31 19:38
CheckCell cell = (CheckCell) getById(CheckCell.class, cellId);cell.setCheckCellState(CheckCell.STATE_CONFIRM);

提交事物前,不调用update(cell)也写入数据库


hibernate在每个session里都会做些处理,比如把查询过的对象缓存起来什么,这个时候这些对象的实例是和数据库保持关联的,hibernate会记录session生命周期内所有缓存对象的操作过程,最后都会反映到数据库去,也就是所谓的托管状态,所以才会有自动更新这种问题。只要每次都把查询到的对象用evict(或clear)清除(记得,是每次),那么就不会有托管状态的entity,也就不会有自动更新,但这不会影响(应该)update(或saveOrUpdate)操作,evict只是清楚实例与数据库的关联而已,不是清楚实例本身。 



0 0