将对象添加到列表会覆盖一些结果

时间:2015-01-28 08:24:24

标签: java list overwrite

我添加了列表中的对象,但是存在最重要的问题。如何解决这个问题?我在main方法中的transactionIdList中发出了3个值。 这三个值发送到下面的方法,我想添加所有结果返回。但是,只有两个结果返回bsList,它们处于( basvuru != null && !basvuru.isEmpty()))状态。

     List<ApplicationResult> bsList = new ArrayList();
     Application bsDB = new Application();

     for (int i = 0; i < transactionIdList.size(); i++) {
        List basvuru = session.createQuery("from Application as bsvr where bsvr.transactionId = :var1").setParameter("var1", transactionIdList.get(i)).list();
        if (basvuru == null) {
           ApplicationResult bss = new ApplicationResult();
           bss.setTransactionId(transactionIdList.get(i));
           bss.setBasvuruDurum("no value");
           bsList.add(bss);
        } else if (basvuru != null && !basvuru.isEmpty()){
           ApplicationResult bs = new ApplicationResult();
           bsDB = (Application) basvuru.get(0);
           bs.setTransactionId(bsDB.getTransactionId());
           bs.setBasvuruDurum(bsDB.getDurum());
           bsList.add(bs); 
        }
    }

3 个答案:

答案 0 :(得分:2)

唯一的解释是,session.createQuery()会返回一个List,而null不是{{1}},而是为空。

答案 1 :(得分:1)

basvruru很可能在某个时候不是null而是空列表。在这种情况下,没有任何内容添加到bsList。

您可能希望将if子句更新为basvuru == null || basvuru.isEmpty(),并使用and else。

答案 2 :(得分:0)

List中的

实现值永远不会被覆盖。你必须有其他一些问题。可能basvuru不是null