我用的S1+S+H做的框架,添加消息成功后会在主表和子表各添加一条数据,但现在需求是要能一次循环添加多条,现在已提交进入各ACTION循环3次,玩了后 子表正常三条数据,但主表不知道为什么成1条数据, 子表的外键全是挂在一个建上,这是怎么回事啊!我的映射关系是1对多 会跟这个有关系吗

解决方案 »

  1.   

    public ActionForward add(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
    MessageForm messageForm = (MessageForm) form; // 创建session
    HttpSession session = request.getSession(); // 判断是否登录
    TblLoginUser user = (TblLoginUser) session.getAttribute("user"); // 上传图片
    String returnName = MyStringHelp.UploadImg(messageForm.getFormFile(),
    request, null);
    // 获得课程信息的费用和周期
    Double fees = Double.parseDouble(request.getParameter("feiyong1"));
    String cycle = request.getParameter("zhouqi"); // 子类目
    TblCategoryChild tblcc = categorychildbiz.findById(Integer
    .parseInt(messageForm.getChildId()));
    // 获得课程信息
    TblMessageCourse tblmc = messageForm.getTblmc();
    tblmc.setCourseFees(fees); // 费用
    tblmc.setCourseCycle(cycle); // 周期
    String courseClaimValue = tblmc.getCourseName()
    + MyStringHelp.getDateTime(); // 表示将要查询的字段
    tblmc.setCourseClaim(courseClaimValue);
    // 获得发布信息
    TblMessage tblm = messageForm.getTblMessage();
    tblm.setMessageTitle(tblmc.getCourseName());
    tblm.setManagementIp(ListIP.getWebIp(request)); // 添加客户端IP
    tblm.setMessageStartdate(new Date());
    tblm.setRoleId(1); // 信息状态
    tblm.setMessageLogo(returnName); // 上传的图片

    // 放用户存在将用户信息注入发布信息
    if (user != null) {
    if (user.getUserName() != null) {
    List tbluList = userBiz.queryUserByName(user.getUserName());
    if (tbluList != null && tbluList.size() != 0) {
    TblLoginUser tblu = (TblLoginUser) tbluList.get(0);
    tblm.setTblLoginUser(tblu);
    }
    }
    }
    // 获得区域单选
    String selectRdo = request.getParameter("rdo1");
    if ("one".equals(selectRdo)) {
    tblm.setTblCategoryChild(tblcc); // 子类目
    // 将课发布信息注入课程信息
    tblmc.setTblMessage(tblm);
    // 获得区域
    TblQu tblQu = qubiz.findById(Integer.parseInt(messageForm
    .getSelectQuId()));
    // 将区域注入到课程信息
    if (tblQu != null) {
    tblmc.setTblQu(tblQu);
    }
    // 调用添加方法
    boolean bool = donaldMessageCourseBiz.save(tblmc);
    // 当添加成功后取得所添加的对象
    if (bool) {
    TblMessageCourse tblMessageCourse = messageCoursebiz
    .findByClaim(courseClaimValue);
    // 将该对象放进作用域中
    request.setAttribute("tblMessageCourse", tblMessageCourse);
    }
    return mapping.findForward("re_success");
    } else {
    // 多选城市添加
    String manyCityS = request.getParameter("txtManyCitys2");
    // 调用分割方法
    String[] cityNames = MyStringHelp.get_String(manyCityS);
    if (cityNames != null && cityNames.length != 0) {
    // 遍历分割后的数组
    for (int i = 0; i < cityNames.length; i++) {
    if (cityNames[i] != null && cityNames[i].length() != 0) {
    tblm.setTblCategoryChild(tblcc); // 子类目
    // 将课发布信息注入课程信息
    tblmc.setTblMessage(tblm);
    //循环区域消息
    TblQu tblQu = qubiz.findById(Integer.parseInt(cityNames[i]));
    // 将区域注入到课程信息
    if (tblQu != null) {
    tblmc.setTblQu(tblQu);
    }
    donaldMessageCourseBiz.save(tblmc);
    }
    }
    return mapping.findForward("re_success");
    }
    }
    return null;
    }但选择一个城市添加的时候,A和B两张表数据正常各自一条,但选择多个城市的时候循环的时候子表的三条数据全关联到主表了!(A和B 的数据条数怎么会不一致)