DevGo
DevGo

Reputation: 1078

save operation inside for loop

I am working in spring mvc + hibernate.....

I am making create operation inside for loop, but its executed only once. here is my sample code.

        String[] loanIds = request.getParameterValues("loanId");

loanIds value is 5

        for (String string : loanIds) {                 
            loanFinance.setFundingBankId(bankId);
            loanFinance.setIdFundsProductPurpose(Long.valueOf(68449));
            loanFinance.setLoanId(Long.parseLong(string));
            loanFinance.setLastModifiedBy(user.getId());
            loanFinance.setIdEntityloan(Long.parseLong(string));
            loanFinance.setAmount(10000.00);
            loanFinance.setStatus("A"); 

            commonRepository.save(loanFinance);     
            System.out.println("Saved Datas");
        }

I catalina.out I can see "Saved Datas" prints 5 times.... but table inserted only once.

Can anyone give me advice in this, what I am doing wrong here..

Upvotes: 0

Views: 3332

Answers (4)

Tony Banks
Tony Banks

Reputation: 139

for (String string : loanIds) {  

    loanFinance = new LoanFinance(); // This should be in the loop too.
          
    loanFinance.setFundingBankId(bankId);
    loanFinance.setIdFundsProductPurpose(Long.valueOf(68449));
    loanFinance.setLoanId(Long.parseLong(string));
    loanFinance.setLastModifiedBy(user.getId());
    loanFinance.setIdEntityloan(Long.parseLong(string));
    loanFinance.setAmount(10000.00);
    loanFinance.setStatus("A"); 

    commonRepository.save(loanFinance);     
    System.out.println("Saved Datas");
}

Upvotes: 1

chandrashekar.n
chandrashekar.n

Reputation: 374

Extention answer for GIOVANNI

@PostMapping("multiplevents") public void createStgSlobMultiEvents(@RequestBody EcStgSlobEvents createEcStgSlobEvents ) {

    logger.info(" createEcStgSlobEvents --->   " + createEcStgSlobEvents);

    logger.info(" EcStgSlobEventController::: createStgSlobMultiEvents ()  ");

    List<Integer> eventids = createEcStgSlobEvents.getEvenIds();
    EcStgSlobEvents ecStgSlobEvents =null;
    for (Integer eventId : eventids) {
         ecStgSlobEvents = new EcStgSlobEvents();

        ecStgSlobEvents.setCliCode(createEcStgSlobEvents.getCliCode());
        ecStgSlobEvents.setEventId(eventId);
        ecStgSlobEvents.setLineOfBusiness(createEcStgSlobEvents.getLineOfBusiness());
        ecStgSlobEvents.setSlobEventId(createEcStgSlobEvents.getSlobEventId());
        ecStgSlobEvents.setSublineOfBusiness(createEcStgSlobEvents.getSublineOfBusiness());

        createEcStgSlobEvents.setEventId(eventId);
        logger.info(" EcStgSlobEventController::: EventId  " + eventId);
        eventConfigurerepo.save(ecStgSlobEvents);
    }
    logger.info(" EcStgSlobEventController::: createStgSlobEvents - multiplevents()  ");

}

Upvotes: -1

Giovanni
Giovanni

Reputation: 543

You are saving the same object over and over. If you want to insert 5 different element you need to create a new element at each iteration.

 for (String string : loanIds) {  
        loanFinance = new LoanFinance();               
        loanFinance.setFundingBankId(bankId);
        loanFinance.setIdFundsProductPurpose(Long.valueOf(68449));
        loanFinance.setLoanId(Long.parseLong(string));
        loanFinance.setLastModifiedBy(user.getId());
        loanFinance.setIdEntityloan(Long.parseLong(string));
        loanFinance.setAmount(10000.00);
        loanFinance.setStatus("A"); 

        commonRepository.save(loanFinance);     
        System.out.println("Saved Datas");
    }

Upvotes: 3

ChicagoMike
ChicagoMike

Reputation: 628

I believe you have to create a new LoanFinance object for each string you iterate through.

Upvotes: 3

Related Questions