JPA跨数据库执行存储过程问题及优化方案求助
跨数据库调用存储过程的实现问题
我有两个数据库:
- 主数据库:持久化单元(PU)已配置连接该库
- 其他项目的数据库:包含员工、部门表及通用存储过程,需要执行该库中的存储过程
尝试过的两种无效方案
方式一:使用StoredProcedureQuery
代码:
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("[otherDb].[dbo.][sp_name]"); query.registerStoredProcedureParameter(1, String.class, ParameterMode.OUT); query.getOutputParameterValue(1);
抛出异常:
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The database name component of the object qualifier must be the name of the current database.
方式二:使用NativeQuery调用存储过程
代码:
Query query = entityManager.createNativeQuery("{call sp_name(?)}"); query.executeUpdate(); query.getParameterValue(1);
该方式未生效。
当前可行方案
Query query = entityManager.createNativeQuery( "declare @param1 varchar(10) ; exec [otherDb].[dbo].[sp_name] @param1 output; select @param1"); (String)query.getSingleResult();
寻求更优实现方案。
内容的提问来源于stack exchange,提问作者HMoussa
相关产品推荐
相关产品推荐

