spring set的问题

wenwen1 发布于 2012/12/20 20:07
阅读 257
收藏 0
   /*
     * 查找所有的项目开票和回款信息
     */
 @Transactional
 public List<ProjectArtical> findAllFinanceInfors()
 {
  List<ProjectArtical> lists=new ArrayList<ProjectArtical>();
  Set<Project> projects=projectDAO.findAllProjects();
  BigDecimal Money=new BigDecimal(0);
  for(Project project:projects)
  {
   ProjectArtical projectArtical=project.getProjectArtical();
     Set<ProjectCash> cashes=project.getProjectCashs();
     if(cashes!=null)
     {
      BigDecimal cashMoney=new BigDecimal(0);
      for(ProjectCash cash:cashes)
      {
       cashMoney=cashMoney.add(cash.getCashMoney());
      }
      projectArtical.setGrossBudget(cashMoney);
     }else{ 
      projectArtical.setGrossBudget(Money);
     }
     Set<ProjectFinance> finances=project.getProjectFinances();
     if(finances!=null)
     {
      BigDecimal financeMoney=new BigDecimal(0);
      for(ProjectFinance finance:finances)
      {
       financeMoney=financeMoney.add(finance.getFinanceMoney());
      }
      projectArtical.setSaleBudget(financeMoney);
     }else{
      projectArtical.setSaleBudget(Money);
     }
     lists.add(projectArtical);
  }
   return lists;
 }

为什么只是将一个项目的总开票金额financeMoney暂时存在projectArtical对象中的grossBudget中,以及将一个项目的总回款金额financeMoney暂时存在projectArtical的saleBudget中,为什么上面的程序把我projectArtical中的grossBudget和saleBudget给覆盖了啊?

如果后台不能直接想加,那在jsp页面该怎么写呢?

<c:forEach items="${project.projectCashs}" var="current"  varStatus="i">

${current.cashMoney}

</c:forEach>

怎么让红色的代码相加,加成一个项目的总的回款金额。

 

加载中
0
NoahX
NoahX

因为你对projectArtical有set操作,事物会自动提交你的修改请求

1、尽量不要对projectArtical操作,如果需要你可以加入transient字段。

2、你还可以试试修改事物处理方式(不过这会影响读锁

改为@Transactional(readOnly = false)

NoahX
NoahX
new 是新的对象,你又没有调用save,所以不过被自动持久。 hibernate也不知道哪个被new了。 没有new 的就不一样了,从hibernate读出来的,事物知道对象的引用。 你这样一new 相当于与事物知道的对象没关系了,事物最后看它引用的对象是否有变化,并不是你new的。
wenwen1
wenwen1
但为什么我把ProjectArtical projectArtical=project.getProjectArtical(); 这句改成ProjectArtical projectArtical=new ProjectArtical(); projectArtical.setProject(project);就可以了,不会改变数据库的数据呢?
0
xmut
xmut

看你的文章好痛苦!

如果选择前台页面累加,可以这样处理:

<c:set var="total" value="0.0" />
<c:forEach items="${project.projectCashs}" var="current"  varStatus="i">
    ${current.cashMoney }
    <c:set var="total" value="${total + current.cashMoney }" />
</c:forEach> 
项目的总的回款金额:${total }

返回顶部
顶部