最近使用AbstractRoutingDataSource来实现动态切换数据源的功能,发现jpa实现的查询都可以正常实现数据源的动态切换,唯独使用EntityManager创建查询没有进入determineCurrentLookupKey()方法。
调试一番之后发现在创建查询前加上这一行代码即可解决问题。
entityManager.getEntityManagerFactory().createEntityManager();
猜测应该是数据源切换了之后,EntityManager还是使用的第一次初始化使用的数据源,导致切换查询还是查询的之前的数据源。