Atualizando vários ID

4 respostas
Leo_Holanda

Galera tenho um problema e nem sei como resolve-lo…
Estou desenvolvendo um sistema para inventario de patrimonio público, onde trabalho.
Seguinte: tenho 2 classes setor e patrimonio;
em uma determinada página eu tenho uma lista de patrimonios cadastrado em uma sala(fk) que é fk de patrimonio

Quando eu pesquiso quero que ele faça uma atualização em vários patrimonios ao mesmo tempo, dá uma olhada nesse método de patrimonioBean e em seguida do DAO generic.
Agradeço a ajuda…

public void alter() {
	if (patrimonio.getId() != null) {
		Msg.addMsgInfo("Inventário Realizado Com Sucesso");
		this.getPatrimonio().getSetor().setConcluido("Sim");
		dao.atualiza(patrimonio);
	}
}

DAO

public void atualiza(T t) {
	EntityManager em = new JPAUtil().getEntityManager();
	em.getTransaction().begin();
	em.merge(t);
	em.getTransaction().commit();
	em.close();
}

4 Respostas

wagnerfrancisco

Você pesquisa uma lista de patrimônios? Quais patrimônios você quer atualizar? Se você tiver uma lista, pode percorrê-la e atualizar, mas faça isso dentro da mesma transação.

Leo_Holanda

sim Wagner, eu faço a pesquisa pelo setor, e essa pesquisa me traz todos os patrimonios que pertencem ao mesmo.
Só que aí o usuário marca os que foram encontrados e não, e no final da lista o botão para atualizar todos.
Pode me dar um exemplo percorrendo na mesma transação da pesquisa?? Foi isso que vc quis dizer? Dentro da pesquisa?

wagnerfrancisco

Em algum momento eu suponho que você tenha uma lista de todos os patrimônios que você quer atualizar (os patrimônios que o usuário selecionou), certo?

Então, com esta lista, você pode fazer o seguinte:

EntityManager em = new JPAUtil().getEntityManager(); 
try {
   em.getTransaction().begin(); 
   for (Patrimonio p : patrimonios) {
      em.update(p); 
   }
   em.getTransaction().commit(); 
} finally {
   em.close(); 
}

Onde você coloca este método? O ideal é que o seu DAO não gerenciasse as transações, seria melhor se tivesse um serviço para isto. Como não tem, sugiro que você faça um método no DAO que receba a lista e atualize. Assim vc pode fazer tudo em apenas uma transação.

Leo_Holanda

Pô blz Wagner, valeu pela dica… vou tentar resolver aqui e assim que terminar te aviso!!
Valeu

Criado 27 de agosto de 2012
Ultima resposta 27 de ago. de 2012
Respostas 4
Participantes 2