问题描述:
我们项目在开发过程中,使用到了jpa,查询非本地库,使用原生sql查询第三方数据库,
例如:
@DS("配置的库名")
@Query(value = " select 字段1,字段2 from table",nativeQuery = true)
List<Map<String,接受字段对象>> getXXXList();
程序调用过程中,一直报表不存在,plsql中是能够看到相关表的,一直以为写的jpa语法问题,最终发现是因为事务的问题导致的,
解决方法:
我们在service实现层,将事务注解去除,
原因:
我们使用多数据的方式是,spring 自带的多数据源配置
spring:
datasource:
primary:baseA #默认数据库
strict: false #是否严格匹配数据库
datasource:
baseA:
url:
username:
等
baseB:
url:
username:
等
因为使用transactional事务注解,
默认主数据源了,用了DS("baseB"),也查不到第三方数据库,
以往,我们配置多数据源时,分别写两个config配置类class,项目启动加载两个config文件,加载两个数据库,分别在不同的文件夹下进行数据库交互,没有这个问题,这个比较特殊,记录一下