HikariCP
HikariCP copied to clipboard
no transaction is in progress by insert
Hello,
i am just trying to use HikariCP in my SpringBoot project for multi-datasources purpose (Multi-tenancy).
After some tests I can get SQL-query working. But I get exception:
Caused by: javax.persistence.TransactionRequiredException: no transaction is in progress
`2022-04-07 00:06:57.149 TRACE 33052 --- [nio-8080-exec-1] o.hibernate.event.internal.EntityState : Transient instance of: com.paipeng.saas.tenant.model.Product
2022-04-07 00:06:57.149 TRACE 33052 --- [nio-8080-exec-1] o.h.e.i.DefaultPersistEventListener : Saving transient instance
2022-04-07 00:06:57.150 TRACE 33052 --- [nio-8080-exec-1] o.h.e.i.AbstractSaveEventListener : Saving [com.paipeng.saas.tenant.model.Product#
java.lang.Exception: exception just for purpose of providing stack trace at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.markRollbackOnly(JdbcResourceLocalTransactionCoordinatorImpl.java:324) ~[hibernate-core-5.6.7.Final.jar:5.6.7.Final] at org.hibernate.engine.transaction.internal.TransactionImpl.markRollbackOnly(TransactionImpl.java:203) ~[hibernate-core-5.6.7.Final.jar:5.6.7.Final] at org.hibernate.engine.transaction.internal.TransactionImpl.setRollbackOnly(TransactionImpl.java:224) ~[hibernate-core-5.6.7.Final.jar:5.6.7.Final] at org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setRollbackOnly(JpaTransactionManager.java:712) ~[spring-orm-5.3.18.jar:5.3.18] at org.springframework.orm.jpa.JpaTransactionManager.doSetRollbackOnly(JpaTransactionManager.java:611) ~[spring-orm-5.3.18.jar:5.3.18] at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:844) ~[spring-tx-5.3.18.jar:5.3.18] at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:809) ~[spring-tx-5.3.18.jar:5.3.18] at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:672) ~[spring-tx-5.3.18.jar:5.3.18] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:392) ~[spring-tx-5.3.18.jar:5.3.18] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.18.jar:5.3.18] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.18.jar:5.3.18] at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.18.jar:5.3.18] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.18.jar:5.3.18] at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:174) ~[spring-data-jpa-2.6.3.jar:2.6.3] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.18.jar:5.3.18] at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.18.jar:5.3.18] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.18.jar:5.3.18] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.18.jar:5.3.18] at jdk.proxy2/jdk.proxy2.$Proxy129.saveAndFlush(Unknown Source) ~[na:na] at com.paipeng.saas.tenant.service.ProductService.save(ProductService.java:47) ~[main/:na]
` when I want to save an object.
If I set "allow_update_outside_transaction: true", it works.
Looks like that my transaction is not found during runtime.
My Dev-Env is: Java 8; Spring Boot 2.6.6; HikariCP 4.0.3 with MySQL 8.0 under MAC OSX
Thanks for any advice.
Regards,
Pai
and the HikariConfig:
spring: datasource: hikari: connection-timeout: 20000 idle-timeout: 300000 max-lifetime: 900000 maximum-pool-size: 10 minimum-idle: 10 pool-name: ConnPool connection-test-query: select 1 driverClassName: com.mysql.cj.jdbc.Driver dataSourceClassName: show-sql: true format_sql: true ddl-auto: update dialect: org.hibernate.dialect.MySQL8Dialect allow_update_outside_transaction: false auto-commit: true data-source-properties: cachePrepStmts: true prepStmtCacheSize: 250 prepStmtCacheSqlLimit: 2048 useServerPrepStmts: true useLocalSessionState: true rewriteBatchedStatements: true cacheResultSetMetadata: true cacheServerConfiguration: true elideSetAutoCommits: true maintainTimeStats: false
Hello,
just find a solution for my issue:
https://stackoverflow.com/questions/58102106/jpa-hib-not-saving-to-database-but-reading-db-mysql-hikari-tomcat-9-spring
It works for me.
Regards
Pai