日期:2014-05-17  浏览次数:20935 次

hibernate save
public void saveList(Param param,List<Double> planPriceList){
Date date=new Date();
  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
  java.sql.Date d=new java.sql.Date(date.getTime());
   
if(planPriceList != null && planPriceList.size() != 0 && param.getTimeType().equals("1")){
for(int i = 0; i<planPriceList.size(); i++){
param.setAmt(planPriceList.get(i));
Integer j = i + 1;
param.setMonthValue(j.toString());  
param.setCreateDate(d);
   
  Param saveParam = new Param();
  saveParam.setActiveFlag(param.getActiveFlag());
  saveParam.setAmt(param.getAmt());
  saveParam.setAuditor(param.getAuditor());
  saveParam.setBusinessType(param.getBusinessType());
  saveParam.setCompanyType(param.getCompanyType());
  saveParam.setCreateDate(d);
  saveParam.setFourSId(param.getFourSId());
  saveParam.setGroupId(param.getGroupId());
  saveParam.setMonthValue(param.getMonthValue());
  saveParam.setOperator(param.getOperator());
  saveParam.setTimeType(param.getTimeType());
  saveParam.setUpdateDate(param.getUpdateDate());
  saveParam.setYearValue(param.getYearValue());
super.save(saveParam);
}
}
else if(param.getTimeType().equals("0") && param.getAmt() != null){
for(int i=0; i<12; i++){
  Param saveParam = new Param();
  param.setCreateDate(d);
  saveParam.setActiveFlag(param.getActiveFlag());
  saveParam.setAmt(param.getAmt());
  saveParam.setAuditor(param.getAuditor());
  saveParam.setBusinessType(param.getBusinessType());
  saveParam.setCompanyType(param.getCompanyType());
  saveParam.setCreateDate(param.getCreateDate());
  saveParam.setFourSId(param.getFourSId());
  saveParam.setGroupId(param.getGroupId());
  saveParam.setMonthValue(param.getMonthValue());
  saveParam.setOperator(param.getOperator());
  saveParam.setTimeType(param.getTimeType());
  saveParam.setUpdateDate(param.getUpdateDate());
  saveParam.setYearValue(param.getYearValue());
super.save(saveParam);
}
}
}


这是 dao层的 我从页面获取一个对象和一个list<Double> list里面存储了12个值 对应与对象中的
每个月的计划金额 一共有十二个月 所以我要存储12次

可是 如果 我直接在for循环里写
param.setAmt(planPriceList.get(i)); 然后save(param); 数据库中保存的只有一条记录

除非再 new 个新的对象一一赋值 才可以 

我试过 把param。id 清空 但是没用 还是只保存一次  
为什么 这个应该是关于 hibernate的原理 我不明白




------解决方案--------------------
POJO在执行save方法后会被自动添加上主键

所以后面的save无效

应该是这个原因吧?
------解决方案--------------------
你是进去第一个对象还是最后一个对象

如果是第一个可能是我刚才说那个问题

如果最后一个那应该是事物的事
------解决方案--------------------
代码冗余太大。。。很多代码重复写了。。
Java code

public void saveList(Param param,List<Double> planPriceList){}这里船进入的就是Param对象。。为什么进去以后还要new Param();然后再将param