My isolation level is READ UNCOMMITTED, please look at my logs.
Code:
[Controlese] 08:26:38 DEBUG DataSourceTransactionManager:371 - Creating new transaction with name [br.com.controlese.service.IValorLancadoServico.consolidar]: PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED
[Controlese] 08:26:38 DEBUG DataSourceTransactionManager:202 - Acquired Connection [jdbc:postgresql://localhost:5432/controlese, UserName=controlese, PostgreSQL Native Driver] for JDBC transaction
[Controlese] 08:26:38 DEBUG DataSourceUtils:170 - Changing isolation level of JDBC Connection [jdbc:postgresql://localhost:5432/controlese, UserName=controlese, PostgreSQL Native Driver] to 1
[Controlese] 08:26:38 DEBUG DataSourceTransactionManager:219 - Switching JDBC Connection [jdbc:postgresql://localhost:5432/controlese, UserName=controlese, PostgreSQL Native Driver] to manual commit
[Controlese] 08:26:38 DEBUG DataSourceTransactionManager:469 - Participating in existing transaction
Hibernate: select lancamento0_.ID_LANCAMENTO as ID1_8_0_, lancamento0_.ID_CATEGORIA as ID8_8_0_, lancamento0_.ID_CONTA as ID9_8_0_, lancamento0_.DATA_CRIACAO as DATA2_8_0_, lancamento0_.DESCRICAO as DESCRICAO8_0_, lancamento0_.ID_FAV_FONTE_PAGADORA as ID10_8_0_, lancamento0_.NUMERO_DOCUMENTO as NUMERO4_8_0_, lancamento0_.SITUACAO as SITUACAO8_0_, lancamento0_.TIPO_CONTA as TIPO6_8_0_, lancamento0_.TIPO_TRANSACAO as TIPO7_8_0_, lancamento0_.ID_USUARIO as ID11_8_0_ from CF_LANCAMENTO lancamento0_ where lancamento0_.ID_LANCAMENTO=?
[Controlese] 08:26:38 DEBUG DataSourceTransactionManager:469 - Participating in existing transaction
Hibernate: select nextval ('hibernate_sequence')
[Controlese] 08:26:38 DEBUG DataSourceTransactionManager:469 - Participating in existing transaction
[Controlese] 08:26:38 DEBUG DataSourceTransactionManager:469 - Participating in existing transaction
Hibernate: select atribuicao0_.ID_ATRIBUICAO as ID1_1_, atribuicao0_.NOME as NOME1_ from CF_ATRIBUICAO atribuicao0_ where atribuicao0_.NOME=?
[Controlese] 08:26:38 DEBUG DataSourceTransactionManager:469 - Participating in existing transaction
[Controlese] 08:26:38 DEBUG DataSourceTransactionManager:469 - Participating in existing transaction
[Controlese] 08:26:38 DEBUG DataSourceTransactionManager:469 - Participating in existing transaction
Hibernate: select valorlanca0_.ID_VALOR_LANCADO as ID1_14_0_, valorlanca0_.DATA as DATA14_0_, valorlanca0_.DATA_BAIXA as DATA3_14_0_, valorlanca0_.ID_LANCAMENTO as ID12_14_0_, valorlanca0_.SITUACAO as SITUACAO14_0_, valorlanca0_.VALOR_BAIXADO as VALOR5_14_0_, valorlanca0_.VALOR_DESCONTO as VALOR6_14_0_, valorlanca0_.VALOR_IMPOSTO as VALOR7_14_0_, valorlanca0_.VALOR_JUROS as VALOR8_14_0_, valorlanca0_.ID_VALOR_LANCADO_CREDITO as ID13_14_0_, valorlanca0_.ID_VALOR_LANCAMENTO_PAI as ID14_14_0_, valorlanca0_.VALOR_MULTA as VALOR9_14_0_, valorlanca0_.VALOR_PREVISTO as VALOR10_14_0_, valorlanca0_.VALOR_REAL as VALOR11_14_0_ from CF_VALOR_LANCADO valorlanca0_ where valorlanca0_.ID_VALOR_LANCADO=?
Hibernate: select valorlanca0_.ID_VALOR_LANCADO as ID1_14_0_, valorlanca0_.DATA as DATA14_0_, valorlanca0_.DATA_BAIXA as DATA3_14_0_, valorlanca0_.ID_LANCAMENTO as ID12_14_0_, valorlanca0_.SITUACAO as SITUACAO14_0_, valorlanca0_.VALOR_BAIXADO as VALOR5_14_0_, valorlanca0_.VALOR_DESCONTO as VALOR6_14_0_, valorlanca0_.VALOR_IMPOSTO as VALOR7_14_0_, valorlanca0_.VALOR_JUROS as VALOR8_14_0_, valorlanca0_.ID_VALOR_LANCADO_CREDITO as ID13_14_0_, valorlanca0_.ID_VALOR_LANCAMENTO_PAI as ID14_14_0_, valorlanca0_.VALOR_MULTA as VALOR9_14_0_, valorlanca0_.VALOR_PREVISTO as VALOR10_14_0_, valorlanca0_.VALOR_REAL as VALOR11_14_0_ from CF_VALOR_LANCADO valorlanca0_ where valorlanca0_.ID_VALOR_LANCADO=?
[Controlese] 08:27:06 DEBUG DataSourceTransactionManager:469 - Participating in existing transaction
At this point the method query.list() flushs the records to databaseCode:
Hibernate: insert into CF_VALOR_LANCADO (DATA, DATA_BAIXA, ID_LANCAMENTO, SITUACAO, VALOR_BAIXADO, VALOR_DESCONTO, VALOR_IMPOSTO, VALOR_JUROS, ID_VALOR_LANCADO_CREDITO, ID_VALOR_LANCAMENTO_PAI, VALOR_MULTA, VALOR_PREVISTO, VALOR_REAL, ID_VALOR_LANCADO) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update CF_VALOR_LANCADO set DATA=?, DATA_BAIXA=?, SITUACAO=?, VALOR_BAIXADO=?, VALOR_DESCONTO=?, VALOR_IMPOSTO=?, VALOR_JUROS=?, ID_VALOR_LANCADO_CREDITO=?, ID_VALOR_LANCAMENTO_PAI=?, VALOR_MULTA=?, VALOR_PREVISTO=?, VALOR_REAL=? where ID_VALOR_LANCADO=?
Hibernate: select valorlanca1_.ID_VALOR_LANCADO as ID1_14_, valorlanca1_.DATA as DATA14_, valorlanca1_.DATA_BAIXA as DATA3_14_, valorlanca1_.ID_LANCAMENTO as ID12_14_, valorlanca1_.SITUACAO as SITUACAO14_, valorlanca1_.VALOR_BAIXADO as VALOR5_14_, valorlanca1_.VALOR_DESCONTO as VALOR6_14_, valorlanca1_.VALOR_IMPOSTO as VALOR7_14_, valorlanca1_.VALOR_JUROS as VALOR8_14_, valorlanca1_.ID_VALOR_LANCADO_CREDITO as ID13_14_, valorlanca1_.ID_VALOR_LANCAMENTO_PAI as ID14_14_, valorlanca1_.VALOR_MULTA as VALOR9_14_, valorlanca1_.VALOR_PREVISTO as VALOR10_14_, valorlanca1_.VALOR_REAL as VALOR11_14_ from CF_VALOR_LANCADO valorlanca0_ inner join CF_VALOR_LANCADO valorlanca1_ on valorlanca0_.ID_VALOR_LANCADO_CREDITO=valorlanca1_.ID_VALOR_LANCADO where valorlanca0_.ID_VALOR_LANCADO=?
Here I´am throwing NullPointerException just to test the transactionCode:
[Controlese] 08:27:10 DEBUG DataSourceTransactionManager:916 - Triggering beforeCompletion synchronization
[Controlese] 08:27:10 DEBUG DataSourceTransactionManager:821 - Initiating transaction rollback
[Controlese] 08:27:10 DEBUG DataSourceTransactionManager:273 - Rolling back JDBC transaction on Connection [jdbc:postgresql://localhost:5432/controlese, UserName=controlese, PostgreSQL Native Driver]
[Controlese] 08:27:10 DEBUG DataSourceTransactionManager:945 - Triggering afterCompletion synchronization
[Controlese] 08:27:10 DEBUG DataSourceUtils:193 - Resetting isolation level of JDBC Connection [jdbc:postgresql://localhost:5432/controlese, UserName=controlese, PostgreSQL Native Driver] to 2
[Controlese] 08:27:10 DEBUG DataSourceTransactionManager:314 - Releasing JDBC Connection [jdbc:postgresql://localhost:5432/controlese, UserName=controlese, PostgreSQL Native Driver] after transaction
[Controlese] 08:27:10 DEBUG DataSourceUtils:312 - Returning JDBC Connection to DataSource
java.lang.NullPointerException
at br.com.controlese.service.impl.ValorLancadoServico.consolidar(ValorLancadoServico.java:295)
After this rollback, a select in my database returned records that shouldn't have been sent.