问题描述
我在action中通过 Criteria ca = this.getSession().createCriteria(Test.class);查询获得纪录list根据需求将list里的实体某个字段进行了包装,结果包装完成后他自动将我包装的结果更新到数据库中了,这个问题应该怎么解决代码如下if(list!= null){for(Test test:list){ if(StringUtils.isNotEmpty(test.getStatus()))test.setStatus(StatusEnum.valueOf(test.getStatus()).getValue());}} 这是后台数据库执行顺序注:用的分页查询Hibernate: select * from ?Hibernate: select tuser0_.Hibernate: update TMS_TASK_INFO Hibernate: select count(*) as y0_ from TMS_TASK_INFO this_ 问题补充:封装完成后 我又调用了 一个service是查询记录结果集,就是调用这个方法的时候执行的update操作,然后才执行的 select count(*)操作
解决方案
session的flushModel是什么值?http://blog.csdn.net/gangqinjiawang/article/details/6030218
解决方案二:
本身这个更新是没问题的 也是hibernate不错的功能, 你系统维护数据库对象就可以了,问题在于:对于数据库对象, 增删改都是针对数据库的操作, 不update到数据库就不应该去修改他, 可以把值都copy到你业务的VO对象中再操作. 用VO对象来控制业务, 而不是持久化的对象。不要让这个模型做来多的事情, 功能单一才是好的。