search

Home  >  Q&A  >  body text

How to view the SQL queries issued by Hibernate to set transaction level and autocommit

On my MySQL server, in the general logs I see a lot of logs like this:

2023-03-31T09:31:23.208-07:00   2023-03-31T16:31:23.208345Z37028 Query SET autocommit=0
2023-03-31T09:31:23.211-07:00   2023-03-31T16:31:23.211201Z36956 Query set session transaction read write
2023-03-31T09:31:23.211-07:00   2023-03-31T16:31:23.211807Z36957 Query /* dynamic native SQL query */ select now() /*app health check*/
2023-03-31T09:31:23.255-07:00   2023-03-31T16:31:23.255990Z36995 Query set session transaction read write
2023-03-31T09:31:23.273-07:00   2023-03-31T16:31:23.273013Z36957 Query set session transaction read write
2023-03-31T09:31:23.276-07:00   2023-03-31T16:31:23.276323Z36956 Query SET autocommit=0
2023-03-31T09:31:23.320-07:00   2023-03-31T16:31:23.320214Z36995 Query SET autocommit=0
2023-03-31T09:31:23.334-07:00   2023-03-31T16:31:23.334801Z36957 Query SET autocommit=0
2023-03-31T09:31:23.461-07:00   2023-03-31T16:31:23.461897Z37056 Query rollback

However, I would like to see them in the client log. I'm very rusty with Java, so please bear with me. If it helps, the question I'm asking looks very similar to this one, although the accepted answer there didn't actually solve it for me either (that's a separate question) :/

I have a YAML file and try to enable the following features:

logging:
  levels:
  - path: org.hibernate
    value: trace
  - path: org.hibernate.SQL
    value: debug
  - path: org.jooq
    value: trace
  - path: com.amazonaws
    value: debug
  - path: com.zaxxer
    value: debug
  - path: com.mysql
    value: debug
  - path: org.hibernate.engine.transaction.internal.TransactionImpl
    value: debug
  - path: com.mysql.clusterj.core.TransactionImpl
    value: debug
  - path: org.hibernate.jpa.internal.TransactionImpl
    value: debug

P粉734486718P粉734486718489 days ago607

reply all(1)I'll reply

  • P粉155128211

    P粉1551282112023-09-14 09:03:53

    Hibernate will not send these queries. It is the JDBC driver that sends them. The relevant JDBC API is java.sql.Connection.setAutoCommit(), which in a container environment is typically called by a connection pool.

    reply
    0
  • Cancelreply