Duvida com EJB ( stateless ) persistindo automaticamente  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
sudeval
JavaGuru
[Avatar]

Membro desde: 08/06/2005 09:48:30
Mensagens: 213
Localização: Fortaleza/CE
Offline

estou com um pequeno probleminha, mas creio que seja algo simples para muitos...

tenho uma classe :

@Stateless
public class RelatorioEstatisticoBusiness implements
RelatorioEstatisticoBusinessLocal, RelatorioEstatisticoBusinessRemote {

@PersistenceContext(name="ReoPU")
private EntityManager em;


@Override
public List<Programa> gerarRelatorioEstatistico(UnidadeAdministrativa admin,Cidade cidade) {
// acoes...
}
}



caso eu faça em gerarRelatorioEstatistico algo do tipo

public List<Programa> gerarRelatorioEstatistico(UnidadeAdministrativa admin,Cidade cidade) {
List<Consolidacao> consolidacoes = obterConsolidacoes(admin,cidade); // retorna uma lista , obtidas atraves de EntityManager.createQuery()
// por ex.
for(Consolidacao consolidacao : consolidacoes) {
consolidacao.setTotal(1000); // so para mostrar mesmo, se eu fizer isso aqui,ele atualiza no banco!
}
}



estava tentando acumular valores dentro de objetos Consolidacao, fazendo consolidacao.setTotal(valor), so que percebi que ele faz isso direto no banco, ou seja, toda vez que eu consigo obter um objeto e altero algo nele ( com set e talz ) ele aplica isso no banco, como eu devo fazer para trabalhar com objetos ( Entity ) vindo do banco sem que eu os altere ?

creio que tenha alguma coisa haver com contexto, interface Local do ejb...
nbluis
GUJ Master
[Avatar]

Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline

Utilize um atributo @transient.
O container faz commit automático de alterações em objetos managed ao fim da transação.

Luis Eduardo Bohrer

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
[WWW]
sudeval
JavaGuru
[Avatar]

Membro desde: 08/06/2005 09:48:30
Mensagens: 213
Localização: Fortaleza/CE
Offline

Opa Luis,
vou dar uma olhada sobre o @transiet
a utilizacao de tal atributo seria no metodo ou classe?

t+
_sic_
JavaChild

Membro desde: 06/05/2005 16:09:26
Mensagens: 135
Offline

Pelo o que eu entendi a sua entidade Consolidacao tem um atributo total, certo?

Se sim, é no atributo total da classe Consolidacao que você deve anotar com a anotação @Transient.

[]'s

"Não há nada que seja maior evidência de insanidade do que fazer a mesma coisa dia após dia e esperar resultados diferentes."

Einstein
[MSN] [ICQ]
sudeval
JavaGuru
[Avatar]

Membro desde: 08/06/2005 09:48:30
Mensagens: 213
Localização: Fortaleza/CE
Offline

ae pessoal essa dica do Transiet foi bastante util quando eu nao queria persistir tal valor/campo do objeto....

agora estou com um problema similar a esse anterior, em que eu tenho um Objeto/Entidade em que ao obter do banco (usando entityManager / JBOss ) e alterado um campo nele, automaticamente eh persistido, so que eu queria que ele so fosse persistido quando eu fizesse uma confirmação. (um merge() do entityManager por exemplo )

eu tenho um OBjeto

Projeto {

// que tem uma Lista de Recursos
List<Recurso> recursos;
}
e quando eu adiciono recurso a esse projeto automaticamente ele eh salvo !

alguma dica?
 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team