当前位置: 首页 > 知识库问答 >
问题:

Transactional+AbstracTroutingDataSource+EntityManager

仲孙凡
2023-03-14

我有两个具有不同PlatformTransactionManager、LocalContainerEntityManagerFactoryBean的数据源

我已经用org.springframework.transaction.annotation.transactional将manager方法注释为@transactional(value=“ReportingDataSource”)

我的存储库中有javax.persistence.EntityManager声明来执行一些查询。

EntityManager声明期望使用下面提到的unitName的PersistenceContext来标识不同的数据源。有没有办法使用一个EntityManager声明,其中事务性将根据指定的值路由到预期的数据源

@PersistenceContext(UnitName=“master”)private EntityManager EM;

@PersistenceContext(UnitName=“Reporting”)private EntityManager Reportem;

如果我没有指定unitName,它将抛出这个错误:“没有'javax.persistence.EntityManagerFactory'类型的合格bean可用:预期为单个匹配bean但找到2”

共有1个答案

公良泰宁
2023-03-14

我认为它应该是2个EntityManager,一个chainedTransactionManager for best effort 1 PC

Spring-是否可能在同一个应用程序中使用多个事务管理器?https://jira.Spring.io/browse/spr-3955根据“最大努力1pc”模式实现Spring ChainedTransactionManager

 类似资料:
  • 问题内容: 我有一个Spring + Hibernate / Flex应用程序,需要在数据库模式之间动态切换。为了实现这个目标我实现了一个AbstractRoutingDataSource下面这个文章。不幸的是,它不起作用。它实际上以默认架构(logical_public)执行SQL。任何帮助将不胜感激。谢谢。 这是我的设置: applicationContext.xml 包含两个数据源。每个数据

  • 问题内容: 是否可以在spring嵌套@Transactional带注释的方法?考虑这样的事情: 如果我在b()中回滚并在a()中回滚,在这种情况下会发生什么? 问题答案: 不需要 对方法的第二个注释,因为默认情况下 ,其传播为,因此由method调用的方法将是事务性的。如果要在通过method调用的方法中启动新事务,则需要修改传播规则。阅读有关交易传播的信息。

  • 问题内容: 如果有人可以解释此注释的作用以及确切的使用时间: 谢谢 问题答案: 当传播设置为PROPAGATION_REQUIRED时,将为应用该设置的每种方法创建一个逻辑事务作用域。每个此类逻辑事务作用域可以单独确定仅回滚状态,而外部事务作用域在逻辑上与内部事务作用域无关。当然,在标准PROPAGATION_REQUIRED行为的情况下,所有这些范围都将映射到同一物理事务。因此,内部事务范围中设

  • 问题内容: 我有 我的问题是:mySetup,testMy和myTeardown是否都将在同一事务中运行?似乎他们应该这样做,但是我遇到了一个奇怪的错误,这可能表明他们正在互相踩踏。 问题答案: 是的,这三种方法将在同一事务中运行。请参阅参考文档中的TestContext Framework /事务管理 部分: 在 事务 内 执行任何before方法(例如,用JUnit的@Before注释的方法)

  • 我希望将后端公开为“资源”(如Restlet),并消除服务层,以便Rest资源可以直接与Dao交互。这样,资源就是契约,而不是接口。 如果事务由Spring本地管理,在Spring MVC 3控制器上使用@Transactional语义学是否有问题?回滚和捕捉异常有什么问题吗?

  • 问题内容: 有人可以通过实际示例解释注释中的隔离和传播参数吗? 基本上,何时和为什么我应该选择更改其默认值。 问题答案: 好的问题,尽管不是一个简单的答案。 Propagation 定义事务之间的关系。常用选项: :代码将始终在事务中运行。创建一个新事务或重用一个事务(如果有)。 :代码将始终在新事务中运行。如果存在当前事务,则将其挂起。 Isolation 定义事务之间的数据契约。 :允许脏读。