Estou usando JPA, e preciso pegar as querys de Insert/Update/Delete antes de serem executadas no banco de dados?
Alguém sabe como faço isso?
Estou usando JPA, e preciso pegar as querys de Insert/Update/Delete antes de serem executadas no banco de dados?
Alguém sabe como faço isso?
Procure por callbacks:
http://ericogr.wordpress.com/2008/04/28/usando-callback-listeners-jpa/
Cria um PreparedStatement();
São muitas tabelas, não vai dar pra fazer isso para cada uma. Por isso estou procurando uma forma de pegar o comando sql criado pelo jpa antes de executar no banco de dados.
São muitas tabelas, não vai dar pra fazer isso para cada uma. Por isso estou procurando uma forma de pegar o comando sql criado pelo jpa antes de executar no banco de dados.
O que você quer fazer com estes sqls ?
São muitas tabelas, não vai dar pra fazer isso para cada uma. Por isso estou procurando uma forma de pegar o comando sql criado pelo jpa antes de executar no banco de dados.
O que você quer fazer com estes sqls ?
1- Auditoria.
2- As querys geradas serão utilizadas para fazer um sync com outros bancos de dados.
São muitas tabelas, não vai dar pra fazer isso para cada uma. Por isso estou procurando uma forma de pegar o comando sql criado pelo jpa antes de executar no banco de dados.
O que você quer fazer com estes sqls ?
1- Auditoria.
2- As querys geradas serão utilizadas para fazer um sync com outros bancos de dados.
Bom vc pode fazer de muitas formas, vou sugerir estas:
1 - Vc poderia colocar um show sql com o valor true no persistence.xml
2 - Já é um pouquinho mais complicado de fazer em runtime, mas como falado pelo Vinicius vc pode começar estudando os callbacks em entidades ou listeners para ver se irá te atender…
O único problema do callback é que eu não tenho exatamente a query que foi executada, e sim o objeto. Mas se não tiver forma de pegar a query em runtime vou ter que partir para esse lado mesmo.
se estiver usando Hibernate, cria um interceptor, e coloca ele nos metodos add, remove, update…
e ai trata o evento…
se estiver usando Hibernate, cria um interceptor, e coloca ele nos metodos add, remove, update…e ai trata o evento…
Essa foi quase. Com interceptor que consigo pegar a query que vai ser executada no método “onPrepareStatement” porém a query vem assim:
INSERT INTO TableA(Col1,Col2,Col3) VALUES(?,?,?)
eu eu precisava da query assim:
INSERT INTO TableA(Col1,Col2,Col3) VALUES(“Value1”,“Value2”,“Value3”)
please… eu ainda não consegui resolver este problema.
Estou tentando pegar o SQL completo também. Caso tenha conseguido favor postar. Até mais!