2015-01-28 6 views
0

목록에 개체를 추가했지만 문제가 해결되었습니다. 어떻게 해결할 수 있습니까? 내 main 메소드에서 transactionIdList에 3 개의 값을 보냈다. 이 세 가지 값은 메서드 아래에 보내고, 나는 모든 결과를 반환하고 싶습니다. 그러나 (basvuru != null && !basvuru.isEmpty())) 상태에있는 bsList를 사용한 결과는 두 가지입니다.목록에 개체를 추가하면 일부 결과를 덮어 씁니다.

 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); 
     } 
    } 
+0

이 아니므로 데이터베이스에 데이터가 없을 수 있습니다. 그걸 확인 했니? 목록에 추가 된 객체는 결코 덮어 쓰이지 않습니다. (덧셈 이외의 api를 사용하지 않는 한) – SMA

+0

질문에 대한 귀하의 진술은 의미가 없습니다. 무엇이 문제를 무시하고 있습니까? 또한 두 가지 흐름 조건 (if와 else if)에 기반하여'bsList'에'bs '를 추가하고 있습니다 - 만약이 두 값을 사용하여'bs' 값을 만족시키지 못하면 어떻게해야합니까? 그 후에 'bs'값을 추가하지 않는 것처럼 보입니다. 왜 'bsList'에 두 개의 결과가 나오는가? – ha9u63ar

답변

2

유일한 설명입니다 session.createQuery() 반환 null 아니라, 비어있는 하나 List.

+0

네, 그럼에도 불구하고 해결책이 있습니다.이 바보 같은 것에 대해 유감입니다. – Deniz

1

대부분의 경우 basvruru는 null이 아니지만 빈 목록입니다. 이 경우 bsList에 아무 것도 추가되지 않습니다.

아마도 if 절을 basvuru == null || basvuru.isEmpty()으로 업데이트하고 기타를 사용하고 싶을 것입니다.

+0

그러나 나는 bsDB = (Application) basvuru.get (0)에서 rangeCheck 배열이나 이와 비슷한 예외를 주었다. 선 . – Deniz

+0

빈 목록에서 get (int)을 호출하면 항상 ArrayIndexOutOfBounds 예외가 발생합니다. 두 번째 코드 블록은 목록이 null이 아니고 비어 있지 않은 경우에만 실행되어야합니다. – Nick

0

List 구현 값이 결코 오버라이드되지 않습니다. 다른 문제가 있어야합니다. basvurunull