栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Spring Boot,Hibernate中使用@Query注释以JSON格式(键值对)查询结果

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Spring Boot,Hibernate中使用@Query注释以JSON格式(键值对)查询结果

您实际上正在使用选择进行投影,该选择不返回任何特定对象,而是返回 一个元组该元组
是您在查询中选择的对象数组。无论采用哪种方式制作JSON,都没有名称,只有值。

您需要创建一个DTO来保存要通过JSON中的名称传递的值。

一个最小的示例,具有一个简单的实体,例如:

@Entity@Getter@RequiredArgsConstructorpublic class TestClass {    @Id    @GeneratedValue    private Long id;    @NonNull    private String a,b,c;}

并愿意通过-例如-仅

a
b
可能会有DTO,例如:

@RequiredArgsConstructorpublic class TupleDto {    @NonNull    private String a,b;}

在你的情况下

PriceListDetailsDto

仓库可以这样声明:

public interface TestClassRepository extends CrudRepository<TestClass, Long> {    @Query(value="SELECt new org.example.TupleDto(tc.a, tc.b) FROM TestClass tc")    List<TupleDto> fetchAB();}

注意 :在上面,使用了操作符

new
和实体构造函数的完整路径。

这样,Spring存储库就知道如何分配选定的字段,并且当从此DTO生成JSON时,将导致具有带有名称(DTO中的名称)的字段。

new
JPQL中的运算符只是
new
a,b,c
java中调用,因此任何行数据都可以用于构造Java对象,而该对象的类构造函数接受相同的参数数量和类型(并以相同的顺序)so
liie
new MyEntityObject(a,b,c)

注意
:在这种简单情况下,如果原始实体被修改为在c中允许空值并添加相应的构造函数,则可以将其用作DTO。如果您的元组是由许多表构成的,则需要创建一个DTO来保存这些值。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/615495.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号