SSH框架,我save一个对象,load的时候为什么是null的呢?新用户注册 1.save(User)2.将save后的User放到session里面 此时 userid=94333.取到session里面的user4.
load(User.class,9433) get(User.class,9433)find("from User where id=9433"); 都统统是null  这是为什么呢

解决方案 »

  1.   

    String sql="from User where userid="
    load(User.class,sql).setParameter(0,9433) 试试
      

  2.   


    spring 控制的事务,这条数据 数据库中添加进去了 
      

  3.   

    我的代码/**
     * 务工人员注册信息(完善信息) 作者:金鑫2009-9-13下午07:44:02
     */
    public ActionForward doRegisterWorker(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
    ActionForward forward = null;
    workerForm = (WorkerForm) form;
    worker = workerForm.getWorker();
    // 注册务工人员的时候 设置公共信息 (自己注册 以及客服帮助注册)
    registerSetCommonInfo();
    session = request.getSession();
    Users users = (Users) session.getAttribute("USER");
    worker.setUsers(users);
    if (workerBiz.addWorker(worker)) {
    System.out.println("yes");
    users = userBiz.getUsers(users.getUserId());//这个地方返回的是null
    /**
     * 覆盖用户
     */
    session.setAttribute("USER", users);
    /**
     * 覆盖用户信息
     */
    session.setAttribute("USERINFO", worker);
    forward = mapping.findForward("worker");
    } else {
    System.out.println("no");
    }
    return forward;
    } /**
     * 根据id获得用户 作者:金鑫2009-9-16上午11:06:46
     * 
     * @param userId
     * @return
     */
    public Users getUsers(BigDecimal userId) {
    return (Users) dao.load(Users.class, userId);
    }
      

  4.   


    已经入库了 /**
     * 用户注册
     */
    public ActionForward doRegister(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
    session = request.getSession();
    if (isPassCode(request)) {
    // 取到需要注册什么类型角色
    userRoleId = Integer.parseInt(request.getParameter("userRoleId"));
    userRole = userBiz.getUserRole(userRoleId);
    if (null != userRole) {
    userForm = (UserForm) form;
    user = userForm.getUser();
    security = new Security();
    // 加密密码
    user.setUserPassword(security.getEncString(user.getUserPassword()));
    // 设置客户端请求的ip地址
    user.setRegisterIp(request.getRemoteAddr());
    user.setUserRole(userRole);
    if (userBiz.addUser(user, request.getParameter("registerTypeId"))) {
    session.setAttribute("USER", user);
    switch (userRoleId) {
    case 1:// 内部员工
    actionForward = mapping.findForward("index");
    break;
    case 2:// 企业用户
    session.setAttribute("USERNAME", user.getUserName());
    actionForward = mapping.findForward("enterprise");
    break;
    case 3:// 务工人员
    user = (Users) session.getAttribute("USER");
    user = userBiz.getUsers(user.getUserId());//这个地方可以获得
    actionForward = mapping.findForward("worker");
    break;
    }
    } else {
    System.out.println("注册失败");
    }
    }
    } else {
    System.out.println("验证码错误");
    }
    return actionForward;
    }
      

  5.   

    load()跟get()方法差不多,你看看get()方法能否得到啊?
      

  6.   

    BigDecimal userId 不知道是不是 不是int 的原因
      

  7.   

    load是先去缓存中查找,缓存中没有的时候再去数据库查,get是直接去数据库查,试试get
    还有5楼说的也有道理,看看事物配置
      

  8.   

    打印下sql语句,查看下网络。
      

  9.   

    你直接使用对象传递参数,在laod中使用对象
    load(user,user.getId())试下
    但是user中的id必须有值
      

  10.   

    在save语句后面提交事务:
    代码为:
    session.getTransaction().commit();