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

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

例如

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

时间: 2024-10-09 18:47:57

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

两个不同实体对象实现事物提交(SqlTransaction )

public int ExecuteSqlTran(Maticsoft.Model.SHWL_Stock model, Maticsoft.Model.SHWL_OutPutComponet model2) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into SHWL_Stock("); strSql.Append("ID,ComponentName,Brand,Type,Unit,

使用文档对象在页面上创建学生信息表。 信息表包括学号、姓名、性别、电子邮件、联系电话、个人主页和联系地址, 信息表内容通过表单输入,提交前先使用正则表达式进行验证,联系地址不能超过20个字符, 每输入一名学生的信息,提交后,表格增加一行,表格不能被选择、复制。

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>    </head>    <!--        描述:使用文档对象在页面上创建学生信息表.        信息表包括学号.姓名.性别.电子邮件.联系电话.个人主页和联系地址,        信息表内容通过表单输入,提交前先使用

(转)深入理解JavaScript的闭包特性 如何给循环中的对象添加事件

深入理解JavaScript的闭包特性如何给循环中的对象添加事件 初学者经常碰到的,即获取HTML元素集合,循环给元素添加事件.在事件响应函数中(event handler)获取对应的索引.但每次获取的都是最后一次循环的索引.原因是初学者并未理解JavaScript的闭包特性. 有个网友问了个问题,如下的html,为什么点击所有的段落p输出都是5,而不是alert出对应的0,1,2,3,4. 1.  <!DOCTYPE HTML> 2.  <html> 3.  <head&g

.Net之使用Jquery Ajax通过FormData对象异步提交图片文件到服务端保存并返回保存的图片路径

前言: 首先对于图片上传而言,在我们的项目开发中可以说出现的频率是相当的高的.这篇文章中,我将要描述的是在我们.Net中如何使用Jquery Ajax通过FormData对象异步提交图片文件到后台保存,并返回保存的图片路径展示出图片,实现一个无刷新的异步图片上传的过程,当然这里我讲解的是单张图片的保存过程,对于多图片上传的话其实我们只需要在type='file'文本框中加上一个multiple可多选,然后获取input中的文件数组遍历向后台提交感兴趣的话可以尝试,不过下一篇博客将会讲解如何使用L

struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input

原文地址:struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input jsp页面 1     function dosearch() {2         if ($("#textValue").val() == "") {3                 $("#errortip").html("<font color='#FF0000'>请输入查询内容</font>")

“Word自动更改后的内容保存到通用文档模板上。是否加载该模板?“的解决办法

在win7系统下,Word2010出现了不能正常关闭.打开一个已有word文档,点击右上角关闭按钮后,先提示"word已停止工作,windows正在检查该问题的解决方案",随后提示"Microsoft word正试图恢复您的信息,这可能需要几分钟",最后提示"Microsoft Word已停止工作,出现了一个问题,导致程序停止正常工作.如果有可用的解决方案,Windows将关闭程序并通知您".之后,再重新打开word时,提示"Word自

怎么实现form表单提交后不重新刷新当前页面

怎么实现表单提交后不重新刷新当前页面 如何实现表单提交后不重新刷新当前页面 <form name='form1' id='form1' action='/xbcw/cw/xx_xx.action' method='post'> <input type="button" id="btnSubmit" name="btnSubmit" value="保存" onclick="addKp()"

使用EhCache将对象put进缓存后,get出来为null的问题

使用EhCache将对象put进缓存后,get出来为null的问题 问题 以前使用EhCache缓存数据的时候,保存的value都是基于Java的基础类型数据,最近发现保存自定义类型的对象时,get()出来的Element要么为null,要么当用Element的getValue()时抛出net.sf.ehcache.CacheException: Value xxx is not Serializable异常. 解决方案 EhCache在put对象时,该对象必须是可序列化(Serializabl

子类用一个名为subitems的数组属性保存父类对象,为什么不能获取父类对象的信息呢???在main函数中subitems为空,不知道为什么。

main.m如下 1 #import <Foundation/Foundation.h> 2 #import "BNRContainer.h" 3 int main(int argc, const char * argv[]) { 4 @autoreleasepool { 5 6 //创建一个NSMutableArray对象,并用items变量保存该对象的地址 7 BNRContainer *items = [[BNRContainer alloc] init]; 8 fo