gpt4 book ai didi

java - 在同一 session 中更改实体管理器数据源

转载 作者:行者123 更新时间:2023-12-01 22:19:13 24 4
gpt4 key购买 nike

在我的 session 中,我需要调用 db1 和 db2 上的 2 个不同的过程。当我单独调用它们时它工作正常,但当我在同一 session 中调用它们时它会失败。它正确获取第一个数据,但在第二次调用时失败,因为它在 db1 上查找第二个过程,尽管 entitiymanager 的数据源已正确更改。

我错过了什么?

这是代码片段

@Repository
@Transactional
public class DB1Dao {

@PersistenceContext()
private EntityManager entityManager;

@SuppressWarnings("unchecked")
public Model1 getData(String param1) {
.....
}
}

@Repository
@Transactional
public class DB2Dao {

@PersistenceContext()
private EntityManager entityManager;

@SuppressWarnings("unchecked")
public Model2 getData(String param2) {
.....
}
}


@Autowired
private DB1Dao dao1;

@Autowired
private DB2Dao dao2;

@RequestMapping(value = "/inquiry", method = RequestMethod.POST)
public ResponseEntity<Object> inquiryService(@RequestBody InquiryRequest inquiryRequest){
....
Model1 model1 = dao1.getData(param2); // success

....
Model2 model 2 = dao2.getData(param2); // fails since it looks for second procedure on db1
}

最佳答案

您没有显示任何与持久性相关的配置信息,但我猜您应该通过正确命名存储库来区分它们:

@PersistenceContext(unitName = "db1PersitenceUnitName")
private EntityManager entityManager;

关于java - 在同一 session 中更改实体管理器数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58604948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com