我正在实现一个Spring启动Web服务应用程序并尝试将其与MySQL数据库连接,该数据库也由Laravel(PHP)应用程序连接。在开始交易时发生以下异常:
org.springframework.transaction.IllegalTransactionStateException: 找到预绑定的JDBC连接! JpaTransactionManager没有 如果告知要管理,则支持在DataSourceTransactionManager中运行 DataSource本身。建议使用单个 JpaTransactionManager用于单个DataSource上的所有事务,没有 无论是JPA还是JDBC访问。在 org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:359) 〜[spring-orm-4.3.7.RELEASE.jar:4.3.7.RELEASE] at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) 〜[spring-tx-4.3.7.RELEASE.jar:4.3.7.RELEASE] at com.azampay.core.services.BaseService.startTransaction(BaseService.java:45) 〜[classes /:na] at com.azampay.core.services.DelegateServiceImpl.getDelegates(DelegateServiceImpl.java:225) 〜[类/:NA]
Application.java 在application.java中,我提供了自己的TransactionManager:
@Bean
@Primary
public PlatformTransactionManager transactionManager() {
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
jpaTransactionManager.setDataSource(dataSource);
return jpaTransactionManager;
}
并开始交易:
DefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition();
defaultTransactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus status = platformTransactionManager.getTransaction(defaultTransactionDefinition);
解决方案(我已尝试过)
我试图在Application.java中排除DataSourceTransactionManagerAutoConfiguration.class。同样,我将我的交易管理员作为@Primary。但没有任何作用。
任何人都可以帮我解决这个问题吗?我已经搜索过SO和谷歌,但找不到任何解决方案。