在具有多个连接的 Spring Boot Rest API 中公开自定义查询

Posted

技术标签:

【中文标题】在具有多个连接的 Spring Boot Rest API 中公开自定义查询【英文标题】:Expose custom query in Spring Boot Rest API with multiple joins 【发布时间】:2020-12-29 21:11:45 【问题描述】:

我有一个 Spring REST Api 和一个 mysql 数据库,现在我想公开具有多个连接的自定义查询的结果。 我尝试了多个在网上找到的建议,但到目前为止没有一个对我有用。 我想要做的是类似于只读 DTO 的东西,它具有我的自定义查询的所有字段,以便最后我有一个 api 页面将 DTO 数据公开为 JSON,以便我的客户端(Angular)可以从那里读取数据。 我已经尝试过:

使用注入的 EntityManager 创建一个 @RestController,该 EntityManager 执行 NativeQuery,然后用返回的数据填充 DTO,但由于我的 DTO 不是实体,所以我得到一个 Hibernate 映射异常

创建一个自定义存储库及其 Impl,但结果相似

将 Query 放在作为 Query 语句一部分的现有 @Entity 中

我在这里缺少什么?我可能需要注释我的 DTO 吗? Cuttently 它只是一个 POJO,我认为 @Entity 注释在这里不是正确的,因为我不希望从我的 DTO 创建一个表。

【问题讨论】:

【参考方案1】:

通过让 Query 返回一个 Object 类型的数组然后将其映射到 DTO 构造函数来修复它。

【讨论】:

以上是关于在具有多个连接的 Spring Boot Rest API 中公开自定义查询的主要内容,如果未能解决你的问题,请参考以下文章

您将如何使用 Spring Boot 处理仅具有可选查询参数的 REST API?

具有多个数据源 Oracle 和 H2 的 Spring Boot

Spring Boot REST JPA JSON 格式

使用 Spring Boot 的多个 REST 调用

在 Spring Boot 和 Oracle 中使用 STRUCTS 时未释放连接

Spring Boot Rest 服务下载包含多个文件的 zip 文件