spring-boot - 我们如何处理具有单个实体类的多个存储过程
问题描述
我想创建一个休息 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
解决方案
我发现进行自定义查询的答案是制作自定义存储库以通过 Entitymanager 获取数据。但自定义查询返回一个可以转换为对象列表的查询类型。你不能像实体一样获得键值对。
推荐阅读
- javascript - 当孩子有类jquery时添加类
- ios - 尝试访问私有依赖项时,开发中的私有 cocoapod 无法 lint
- python - selenium.common.exceptions.WebDriverException:消息:未知错误:无法聚焦元素,slenium
- npm - 尝试在终端中安装 nodemon 并失去与 npm 的连接
- python - sklearn OneHotEncoding 与 ColumnTransformer
- java - 是否可以加入两个 Java 8 流?
- docker - 正确使用 node-red 的 docker volume
- c++ - 有没有办法检查 CMakeLists 文件中是否有未使用的包?
- java - 在 docker compose 文件中访问 Spring boot 应用程序属性
- r - 绘制时间序列热图时提高 ggplotly 的性能