【发布时间】:2019-11-02 02:00:44
【问题描述】:
我有一个带有 JPA/Hibernate 的 Spring Boot 2.x 应用程序和 2 个单独的事务管理器:每个租户 1 个和应用程序范围内的 1 个。所有实体、存储库和服务都分开在不同的包中。
每当我在我的服务中使用 @Transactional 时,我都需要明确地将 txManager 限定为 @Transactional(value = "tenantTransactionManager") 或 @Transactional(value = "applicationTransactionManager")。
这是非常冗长且容易出错的,因为它们只是文字字符串。
有没有办法可以在包级别设置事务管理器,这样我就不必在每次使用时都明确设置?
根据Multiple transaction managers with @Transactional annotation 中给出的答案,我创建了@TenantTransactional 和@ApplicationTransactional 元注释,但这不允许我设置readOnly 标志,这是每个方法所必需的。
【问题讨论】:
-
只需添加
readOnly并将别名与@AliasFor一起使用。