@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)
public void updateStatus(User user,Integer roleId) {
Role r = roleDao.getRoleById(roleId);
Set<Role> roles = new HashSet<Role>();
roles.add(r);
user.setRoles(roles);
if (user.getStatus()==1) {
user.setStatus(0);
}else{
user.setStatus(1);
}
user.setSex("F"); userDao.updateStatus(user);

}上面是Service方法的代码,执行的是修改用户状态的操作

解决方案 »

  1.   

    我用Spring 集成了Hibernate 
    将事物交给 Spring 管理,事物是自动提交和回滚的
      

  2.   


    JDBC exception on Hibernate data access: SQLException for SQL [update SYS_USER set age=?, email=?, joinDate=?, name=?, outDate=?, password=?, phone=?, registerDate=?, sex=?, USER_STATUS=?, USER_NAME=? where USER_ID=?]; SQL state [72000]; error code [1407]; Could not execute JDBC batch update; nested exception is org.hibernate.QueryTimeoutException: Could not execute JDBC batch update使用FireBug查看响应报错
    对象参数
    User [userId=24, userName=null, name=null, password=null, sex=M, age=0, status=0, email=null, phone=null, joinDate=null, outDate=null, registerDate=Mon Feb 09 15:25:36 CST 2015, roles=[org.ecsys.po.Role@54275294], roleLimits=[]]数据库userName字段约束不能为空
    是不是hibernateTemplate.update()方法接受的参数对象跟数据库冲突了
      

  3.   


    /**
     * 改用户状态
     * @param user 
     */
    public void updateStatus(final User user) {
    System.out.println(user.toString());
    hibernateTemplate.update(user);

    }DAO层的代码