Salvar no bd

3 respostas
Victaum

Bom dia!

Eu tenho uma lista na qual eu faço um for para percorrer, dentro desse for ele seta os valores e salva no banco em duas tabelas, porém ele só salva se percorrer o for todo, ou seja, se ele fizer o for 10 vezes ele só vai salvar o objeto do primeiro for se ele fizer as 10 vezes!

Gostaria de saber se é isso mesmo, ou se tem algum outro modo de fazer!

@Timeout	
	public void inclusaoLoteDividaAtivaAmigavel(Timer timer){

		System.out.println("=====Entrou em inclusaoLoteDividaAtivaAmigavel=====");

		int ano = Calendar.getInstance().get(Calendar.YEAR);
		int anoMenosSeis = ano - 6;		
		List<Pessoa> listaPessoas = null;		
		int i = 0;
		int teste = 0;
		int max = 5;		

		try {

			do{				

				listaPessoas = pessoaFacade.buscaPessoaseDividasPInclusaoAutomaticaDivAnuidade(ano, anoMenosSeis, max);
				System.out.println("###Tamanho da Lista de Dividas### " + listaPessoas.size());
				
				System.out.println("=====Dentro do try inclusaoLoteDividaAtivaAmigavel===== " + teste);
				
				if(listaPessoas != null & !listaPessoas.isEmpty()){					

					for (Pessoa pessoa : listaPessoas) {
												
						for(FinDivida verificaDivida : pessoa.getListaDividas()){
							int x = 0;
							FinTermosInscricao termoInscricao = new FinTermosInscricao();

							System.out.println("Pessoa ID >>> " + pessoa.getId());
							System.out.println("Divida da Pessoa >>> " + pessoa.getListaDividas().get(x).toString());
							x++;
							
							// Verifica se a divida já possui termo
							FinDividaTermosInscricao verificaSePossuiTermo = finDividaTermosInscricaoFacade.verificaSeDividaPossuiTermo(verificaDivida.getCodigo());

							System.out.println("@@@@@@ " + verificaSePossuiTermo + " @@@@@");

							//Se não tiver cadastrada, irá ser cadastrada
							if(verificaSePossuiTermo == null || verificaSePossuiTermo.equals(null)){

								//Seta os Valores que serão salvos no banco
								termoInscricao.setPessoa(pessoa);	
								termoInscricao.setTipoPessoa(pessoa.getTipoPessoa());
								termoInscricao.setFinNatureza(finNaturezaFacade.getById(6L));
								termoInscricao.setDataInclusao(Calendar.getInstance());
								termoInscricao.setFinFase(finFaseFacade.buscarFasePorCodigo(1l));
								termoInscricao.setFinProcesso(null);
								termoInscricao.setObservacao("INCLUSÃO DE DÍVIDA DE ANUIDADE");
								termoInscricao.setAtivo(true);
								termoInscricao.setNumero(geradorSequenciaOficioDAO.getSequenciaNumeroTermoInscricao("RDA"));

								//Cadastra no banco
								finTermosInscricaoFacade.cadastrar(termoInscricao);
								
								System.out.println("!!!SALVOU TERMO INSCRIÇÃO!!!");
								
								for(FinDivida divida : pessoa.getListaDividas()){
									
									System.out.println("FinDivida, Tamanho da Lista das Dividas por Pessoa " + pessoa.getListaDividas().size());

									//Busca o termo cadastrado pra cadastrar na tabela Fin_Divida_Termos_Inscricao 
									FinTermosInscricao termo = finTermosInscricaoFacade.buscaTermoInscricao(termoInscricao.getCodigo());

									//Cria uma nova instancia e seta os dados na tabela
									FinDividaTermosInscricao dividaTermoInscricao = new FinDividaTermosInscricao();									
									
									dividaTermoInscricao.setFinDivida(divida.getCodigo());					
									dividaTermoInscricao.setFinTermoInscricao(termo.getCodigo());									

									System.out.println("FK_Divida " + divida.getCodigo());
									System.out.println("FK_Termo " + termo.getCodigo());

									//Cadastra os dados na tabela
									finDividaTermosInscricaoFacade.cadastrar(dividaTermoInscricao);
								}								
							}else{
								System.out.println("Já existe termo para essa Dívida ");								
							}							
						}
						i++;						
				}
					System.out.println("=====No for em inclusaoLoteDividaAtivaAmigavel===== " + i);
					System.out.println("MAX>>> " + max);

					log.info("Foram incluidos "+i+" em divida ativa");
				}
				
			}while(listaPessoas.size() > 0);
		} catch (RuntimeException e) {
			e.printStackTrace();
		}
		
		
	}

3 Respostas

fguazzel

“Eu num tindi u que vc falou” (by Panico)

Mas isso tem uma cara de ser uma transação no BD. Tipo, tudo ou nada - ou atualiza os 10 registros ou nenhum. É isso?

fguazzel

O mais legal é que o X ficará sempre em 0 ou 1 nesse programa.

Victaum

rsrsrsrs, foi meio idiota essa do x mas ele tb não serve pra nada qndo tiver pronto eu vou apagar!

mas isso mesmo que vc falo ou cadastrar os 10 ou nenhum

Criado 11 de fevereiro de 2010
Ultima resposta 11 de fev. de 2010
Respostas 3
Participantes 2