java - 使用带有 Spring Projection Interface 的本机查询来选择字段
问题描述
我想知道如何填充这些类:
interface BaseDTO {
Integer getId();
String getNome();
Boolean getAtivo();
RegionalDTO getRegional();
MunicipioDTO getMunicipio();
}
interface RegionalDTO {
Integer getId();
}
interface MunicipioDTO {
Integer getId();
}
并运行此查询
@Query(value = "SELECT " +
"base.ID_BASE AS id, base.NOME AS nome, base.ATIVO AS ativo, " +
"regional.ID_REGIONAL AS ID_REGIONAL, " +
"municipio.ID_MUNICIPIO AS ID_MUNICIPIO " +
"FROM TB_BASE base " +
"LEFT JOIN TB_REGIONAL regional on base.ID_REGIONAL = regional.ID_REGIONAL " +
"LEFT JOIN TB_MUNICIPIO municipio on base.ID_MUNICIPIO = municipio.ID_MUNICIPIO " +
"ORDER BY base.ID_BASE", nativeQuery = true)
List<BaseDTO> getAll();
所以我想选择查询中的字段,因为后面我会在这些DTO中放更多的字段。
解决方案
我认为最简单的方法是使用简单的接口,只有 idregional
和municipio
. 调用后getAll
将此接口映射到适当的类结构(其中 ids 变成 dtos)。
List<RealDTO> result = repository.getAll().stream()
.map(i -> new RealDTO(i))
.collect(Collectors.toList());
推荐阅读
- kubernetes - Traefik SSL 让我们在 Kubernetes Ingress 中加密
- bash - 如何知道实例是否正在使用 bash 和 awscli 运行?
- node.js - 如何访问从客户端发送的对象数组中的数据?
- aws-lambda - AWS lambda Java - 获取具有多个值的环境变量
- vue.js - v-text-field 未添加到 v-data-table
- ios - 引脚未显示在 mapView 中。斯威夫特 5
- r - 在 r 中递增地附加一个列表
- java - 如何将多维原始数组转换为多维对象数组
- python - 从实体中提取主题标签并将它们添加到新列
- javascript - 找不到文件的Pupeteer抛出错误