EJB 3.1 Temp Table Postgresql

2 respostas
furlaneto

Boa tarde, estou trabalhando em uma migração de JDBC nativo para Hibernate estou usando EJB 3.1

Na minha aplicação antiga tenho um momento onde são criadas Temp Tables, que são removidas ao fim da sessão automaticamente.
Gostaria de saber como proceder com esse tipo de operação utilizando EJBs pois nesse caso são eles que tem o controle da sessão.
Preciso remover manualmente a Temp Table da sessão?

ex.:

Query query = entityManager.createNativeQuery("select id, name INTO TEMP TABLE USER_TEMP from (select id, name from users) as user_alias").executeUpdate();

//executo minhas consultas
//Após isso devo remover minha temp table?

Tentei com essa anotação @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
mas não funcionou.

Obrigado

2 Respostas

tmvolpato

qual foi o erro que deu no console?pode ser que não seja isso

post o log ai

furlaneto
Caused by: org.postgresql.util.PSQLException: ERROR: relation total already exists

16:21:00,866 ERROR [stderr] (http0.0.0.0-8080-4) 	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)

16:21:00,866 ERROR [stderr] (http0.0.0.0-8080-4) 	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)

16:21:00,866 ERROR [stderr] (http0.0.0.0-8080-4) 	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)

16:21:00,867 ERROR [stderr] (http0.0.0.0-8080-4) 	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)

16:21:00,867 ERROR [stderr] (http0.0.0.0-8080-4) 	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)

16:21:00,867 ERROR [stderr] (http0.0.0.0-8080-4) 	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)

16:21:00,868 ERROR [stderr] (http0.0.0.0-8080-4) 	at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:493)

16:21:00,868 ERROR [stderr] (http0.0.0.0-8080-4) 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

16:21:00,868 ERROR [stderr] (http0.0.0.0-8080-4) 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

16:21:00,869 ERROR [stderr] (http0.0.0.0-8080-4) 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

16:21:00,869 ERROR [stderr] (http0.0.0.0-8080-4) 	at java.lang.reflect.Method.invoke(Method.java:616)

16:21:00,869 ERROR [stderr] (http0.0.0.0-8080-4) 	at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)

16:21:00,870 ERROR [stderr] (http0.0.0.0-8080-4) 	 161 more

Quando eu entro em uma tela ele executa a criação da tabela temporária, e quando eu entrar novamente, não é mais para existir a tabela para que ele possa criar novamente.

Criado 21 de maio de 2013
Ultima resposta 21 de mai. de 2013
Respostas 2
Participantes 2