萍心nice 2015-09-12 08:00 采纳率: 33.3%
浏览 3160
已结题

hibernate 循环遍历 list对象,只保存最后一条数据,偶现

@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public String rankScoreIn(MultipartFile file, String classid,
String testname, String grad, String subject) {
StringBuilder failureMsg = new StringBuilder();
int successNum = 0;
int failureNum = 0;

    Classname classname = null;
    // 班级信息
    if (!StringUtils.isEmpty(classid)) {
        classname = classnameService.get(classid);
        grad = classname.getGrad();
    }

    Organization organization = SiteUtil.getSite().getOrg();

    try {
        ImportExcel ei = new ImportExcel(file, 1, 0);

        String subjectid = DictUtils.getDictValue(subject,
                Constants.SUBJECT, "0");

        // 获得试卷信息
        List<Testpaper> testpaperls = testpaperService.findByGrad(grad,
                testname, new Integer(subjectid));
        Testpaper testpaper = null;
        if (testpaperls != null && testpaperls.size() > 0) {
            testpaper = testpaperls.get(0);
        } else {
            return "<br/>年级:"+grad+" 没有"+subject+"科目试卷";
        }

        // 班级题目质量分析
        List<StudentRank> list = ei.getDataListForScore(StudentRank.class,
                3, subject);
        for (StudentRank studentRank : list) {

            try {
                successNum = this.saveRankScore(studentRank, classname,
                        testpaper, organization, successNum);

            } catch (ConstraintViolationException ex) {
                failureMsg.append("<br/>考号: " + studentRank.getTestno()
                        + " 导入学生成绩排名失败:");
                List<String> messageList = BeanValidators
                        .extractPropertyAndMessageAsList(ex, ": ");
                for (String message : messageList) {
                    failureMsg.append(message + "; ");
                    failureNum++;
                }
            } catch (Exception ex) {
                ex.printStackTrace();
                failureMsg.append("<br/>考号: " + studentRank.getTestno()
                        + " 导入学生成绩排名失败:" + ex.getMessage());
            }

        }

        if (failureNum > 0) {
            failureMsg.insert(0, ",失败 " + failureNum + " 条问题得分,导入信息如下:");
        }
    } catch (Exception e) {
        e.printStackTrace();
        return "导入问题得分失败!失败信息:" + e.getMessage();
    }
    return "已成功导入 " + successNum + " 条问题得分" + failureMsg.toString();

}



public int saveRankScore(StudentRank studentRank, Classname classname,
        Testpaper testpaper, Organization organization, int successNum) {
    // 判断学生是否存在
    String classnamestr = studentRank.getClassname().getClassname();


    Classname classnameexist = classnameService.findByGradclass(
            testpaper.getGrad(), classnamestr);
    if (null == classnameexist) {

        // 不存在则创建
        if (classname == null) {
            classname =studentRank.getClassname();
            classname.setGrad(testpaper.getGrad());
            classname.setClassname(classnamestr);
            classname.setSchool(organization);
            classname.setCreateTime(new Date());
            classnameService.save(classname);

            Student student = studentRank.getStudent();
            student.setClassname(classname);
            student.setGrad(testpaper.getGrad());
            student.setPassword("123456");
            student.setCreateTime(new Date());
            studentService.save(student);
            studentRank.setClassname(classname);
            studentRank.setStudent(student);
        } else {
            // 如果班级存在判断学生是否存在??????????????
            Student student = this.createStudent(
                    studentRank.getStudent(), classname, testpaper);
            studentRank.setClassname(classname);
            studentRank.setStudent(student);
        }
    } else {
        // 如果班级存在判断学生是否存在??????????????
        Student student = this.createStudent(studentRank.getStudent(),
                classnameexist, testpaper);
        studentRank.setClassname(classnameexist);
        studentRank.setStudent(student);
    }
    studentRank.setTestpaper(testpaper);
    studentRank.setCreateTime(new Date());
    studentRankService.save(studentRank);

    successNum++;

    return successNum;
}


代码
    if (null == classnameexist) {

        // 不存在则创建
        if (classname == null) { 这两个条件都满足时,只保存最后一条,其他条件则可以保存正常
        请问是什么原因?
  • 写回答

1条回答 默认 最新

  • 心随自在飞 2016-01-06 09:08
    关注

    应该是对象没有清空,导致后面的判断失误!

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题