SpringMVC+Hibernate 使用 session.update(obj) 未更新的问题
2024-09-04 11:33:36
1、使用spring控制事务
2、使用session.update(obj)执行更新
spring事务配置:
<bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="edit*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="del*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="get*">PROPAGATION_NEVER</prop>
</props>
</property>
</bean>
service方法:
public void enableJobtemplates(List<PlanJobtemplate> jobts) throws Exception {
dao.updateAll(jobts);
}
dao方法:
public void updateAll(final List list) throws Exception {
getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session) throws HibernateException {
for (Object obj : list) {
session.update(obj);
}
return null;
}
});
}
Controller方法:
@RequestMapping("/jobtenable")
public void EnableJobT(HttpServletRequest request,HttpServletResponse response) {
try {
List<PlanJobtemplate> jobts = planService.getJobTByIds(request.getParameterValues("id")); for(PlanJobtemplate jobt:jobts){
jobt.setState(EnumTools.UState.已禁用.ordinal());
}
planService.editJobtemplates(jobts);
utilService.printJsonResult(true, "操作成功!", "no", response);
} catch (Exception e) {
e.printStackTrace();
utilService.printJsonResult(false, "操作失败!", "no", response);
}
}
执行结果:执行过程中没报错,数据也没更新。
修改service方法:
public void editJobtemplates(List<PlanJobtemplate> jobts) throws Exception {
dao.updateAll(jobts);
}
执行结果:成功更新。
原因:如果使用spring控制事务,请注意配置是否正确,如果不是使用spring控制事务,在session.update后加一句session.flush
一般这种问题大概有两种原因
1.事务没有提交,下面已经说了。。
2.就是缓存问题建议在session.update后加一句session.flush(强制缓存中数据与数据库中同步)
最新文章
- jquery 实现 返回顶部
- js版扫雷(可直接运行试玩)
- 项目jar包管理,使用 .userlibraries 文件增加jar包的可移植性,明确jar包依赖,多项目共用jar包里
- java实现将汉字转为拼音
- xcode archive 一直是灰色的
- ServiceStack 介绍
- win系统 添加、修改右键&ldquo;发送到&rdquo;
- MS Sq l数据类型
- (C++) Interview in English. - Constructors/Destructors
- Spring AOP基础知识
- HDU 5326 work (回溯,树)
- ubuntu中磁盘挂载与卸载
- 沙盒操作的核心函数 - NSSearchPathForDirectoriesInDomains用法
- jquery通过attr取html里自定义属性原来这么方便啊
- 如何快速轻松学习bootstrap
- 【WebSocket】WebSocket介绍
- esxi虚拟机克隆后的主机网卡设置
- Mysql找回丢失密码
- VIO回顾:从滤波和优化的视角
- 【转】 vxWorks下常用的几种延时方法