首页 > 解决方案 > 我们如何处理具有单个实体类的多个存储过程

问题描述

我想创建一个休息 API,它将存储过程名称作为输入,过程参数作为休息 API 参数。当我创建一个实体类时,我只获得一个表访问权限,例如我有一个客户表,但我的存储过程访问不同的表和视图,它给了我一个错误:“无效的列名 id”这是因为执行的过程不使用我们在实体类中提到的列和表。

我想使用 spring mvc 和 jpa 创建这个带有 spring rest 的 API。

我还想验证系统 ID 是否存在于表中,例如 tablename:customer { sysid : ram, procedure_name:sp_byid }。

现在,它的工作原理是使用实体类中使用的 table(customer) 检查 systemid 输入,我什至无法获得单个数据,即 procedure_name,因为我们无法在 @ 中传递“select colname from table name where id = x”查询注释。如果存在记录,我们要检查与 id 映射的存储过程。sp_byid 是从不同表“用户”获取数据的存储过程,但我们无法做到这一点,因为实体类没有与存储过程使用的表相同的表,并给出“无效的列名 id”错误。这是一个存储过程的用例示例,其中只有一条记录我有很多要添加。

我们如何处理这个问题,是否有任何替代 jpa 可以在没有实体的情况下工作并且只传递自定义查询?

示例休息 URL:localhost:8080/get/systemid/procedurename

标签: spring-bootspring-mvcjpaspring-data-jparest

解决方案


我发现进行自定义查询的答案是制作自定义存储库以通过 Entitymanager 获取数据。但自定义查询返回一个可以转换为对象列表的查询类型。你不能像实体一样获得键值对。


推荐阅读