首页 > 其他 > 详细

循环保存的对象在事物提交后发现只保存了一个对象

时间:2014-07-08 22:46:58      阅读:310      评论:0      收藏:0      [点我收藏+]

有时候我们在使用事务循环保存多个对象时,可能会出现在提交事务后发现只保存了最后一个对象

例如

public void saveSystemDDL(SystemDDLPojo systemDDLPojo) {
        String keywordname = systemDDLPojo.getKeywordname();
        String[] ite = systemDDLPojo.getItemname();
        String typeflag = systemDDLPojo.getTypeflag();
        if (typeflag != null && typeflag.equals("add")) {
            for (int i = 0; i < ite.length; i++) {
                systemDDLPojo.setDdlName(ite[i]);
                systemDDLPojo.setKeyword(keywordname);
                systemDDLPojo.setDdlCode(i + 1);
//                System.out.println(systemDDLPojo.getDdlName());
//                System.out.println(systemDDLPojo.getDdlCode());
                this.elecSystemDDLDaoImpl.saveObject(systemDDLPojo);
            }
        }

这段代码执行后貌似几个对象的属性值都获取到了,可是却只保存了最后一个对象,这是因为每次循环都是使用的同一个对象,所以到最后就只会保存最后一个对象

这时,只需要将SystemDDLPojo systemDDL = new SystemDDLPojo();放到循环体的里面,保证每一次循环都是一个新的对象

public void saveSystemDDL(SystemDDLPojo systemDDLPojo) {
        String keywordname = systemDDLPojo.getKeywordname();
        String[] ite = systemDDLPojo.getItemname();
        String typeflag = systemDDLPojo.getTypeflag();
        if (typeflag != null && typeflag.equals("add")) {
            for (int i = 0; i < ite.length; i++) {
                SystemDDLPojo systemDDL = new SystemDDLPojo();
                systemDDL.setDdlName(ite[i]);
                systemDDL.setKeyword(keywordname);
                systemDDL.setDdlCode(i + 1);
//                System.out.println(systemDDL.getDdlName());
//                System.out.println(systemDDL.getDdlCode());
                this.elecSystemDDLDaoImpl.saveObject(systemDDL);
            }
        }

这样就解决了

循环保存的对象在事物提交后发现只保存了一个对象,布布扣,bubuko.com

循环保存的对象在事物提交后发现只保存了一个对象

原文:http://www.cnblogs.com/Christine-chao/p/3830550.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!