[VRaptor 3.X] Acessando objeto na Sessão pelo DefaultSaveOrUpdateEventListener do Hibernate

6 respostas
R

Pessoal,

Boa noite! Estou batendo cabeça a um tempo tentando resolver um impasse em um Listener do Hibernate.

Essencialmente o que estou tentando fazer é acessar o UserInfo, um componente @SessionScoped, em uma classe que extende o DefaultSaveOrUpdateEventListener do Hibernate. Como não posso alterar o construtor do meu listener tentei injetar com o Spring o UserInfo, mas não obtive sucesso.

Por acaso alguém teria uma luz?

6 Respostas

Lucas_Cavalcanti

não dá pra fazer isso, pq não é o Vraptor ou o Spring que vão instanciar o listener, e sim o hibernate…

vc só consegue pegar um objeto qqer usando algum tipo de acesso estático, infelizmente…

vc pode criar o seu próprio, ou usar um que o VRaptor tem (não use em casos normais)

UserInfo info = (UserInfo) VRaptorRequestHolder.currentRequest().getRequest().getSession().getAttribute("userInfo");

(a request atual, e pegando o userInfo a partir da session diretamente)

só cuidado que se vc usar esse listener fora de um request o currentRequest vai vir null

D

Interessante…

Lucas, com VRaptorRequestHolder é possível obter qualquer objeto gerenciado pelo VRaptor?

Lucas_Cavalcanti

não, só escopo de request e de session (geralmente é o nome da classe com a primeira minúscula, num atributo de request ou session)…

D

Muito bom saber, isso é o tipo de coisa que tem que ter um aviso “Use com moderação”. :smiley:

R

Lucas Cavalcanti:
não dá pra fazer isso, pq não é o Vraptor ou o Spring que vão instanciar o listener, e sim o hibernate…

vc só consegue pegar um objeto qqer usando algum tipo de acesso estático, infelizmente…

vc pode criar o seu próprio, ou usar um que o VRaptor tem (não use em casos normais)

UserInfo info = (UserInfo) VRaptorRequestHolder.currentRequest().getRequest().getSession().getAttribute("userInfo");

(a request atual, e pegando o userInfo a partir da session diretamente)

só cuidado que se vc usar esse listener fora de um request o currentRequest vai vir null

Funcionou! Muito obrigado @Lucas :wink:

gregory1651

NO VRAPTOR 4 O “VRaptorRequestHolder” FOI REMOVIDO. O QUE DEVO FAZER PARA PEGAR INFORMAÇÕES DA SESSÃO AGORA?

Criado 22 de setembro de 2011
Ultima resposta 20 de abr. de 2015
Respostas 6
Participantes 4