【发布时间】:2022-01-05 15:18:21
【问题描述】:
我有一个连接到多个 oracle 数据库的 Spring Boot 2 + Hibernate 5 多租户应用程序。当我使用 JpaRepository 时,一切都很好,即在收到 http 请求后,'Interceptor' 检测到数据源和 'MultiTenantConnectionProvider' 实现选择 TransactionManager 使用的正确数据源。 问题是什么? 我想使用 TransactionInterceptor 处理来自特定 bean(扩展 JdbcDaoSupport 或注入 JdbcDaoSupport 实现)的某些方法(带有方法名称)的事务。对不起,如果我解释得有点混乱。 但是对于每个 http 请求,该 bean 的数据源是不可变的(默认数据源)。而注入的存储库在正确的事务中对正确的数据源进行操作。
<bean id="txProxyTemplate" abstract="true"
depends-on="transactionManager"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
<bean id="genericJdbcDao" parent="txProxyTemplate">
<property name="target">
<bean class="org.broker.dao.impl.BaseGenericJdbcDAOImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
</property>
</bean>
谁能帮忙解决这个问题?
【问题讨论】:
标签: java spring-boot hibernate spring-data-jpa spring-transactions