大佬教程收集整理的这篇文章主要介绍了在Spring Boot,Hibernate中使用@Query注释以JSON格式(键值对)查询结果,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
您实际上正在使用选择进行投影,该选择不返回任何特定对象,而是返回 一个元组 , 该元组 是您在查询中选择的对象数组。无论采用哪种方式制作JsON,都没有名称,只有值。@H_674_7@
您需要创建一个DTO来保存要通过JsON中的名称传递的值。@H_674_7@
一个最小的示例,具有一个简单的实体,例如:@H_674_7@
@Entity
@Getter
@requiredArgsConstructor
public class TESTClass {
@ID
@GeneratedValue
private Long ID;
@NonNull
private String a,b,c;
}
并愿意通过-例如-仅a
&b
可能会有DTO,例如:@H_674_7@
@requiredArgsConstructor
public class TupleDto {
@NonNull
private String a,b;
}
在你的情况下 PriceListDetailsDto
@H_674_7@
仓库可以这样声明:@H_674_7@
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
和实体构造函数的完整路径。@H_674_7@
这样,Spring存储库就知道如何分配选定的字段,并且当从此DTO生成JsON时,将导致具有带有名称(DTO中的名称)的字段。@H_674_7@
new
JPQL中的运算符只是new
在a,b,c
java中调用,因此任何行数据都可以用于构造Java对象,而该对象的类构造函数接受相同的参数数量和类型(并以相同的顺序)so
liIE new MyEntityObject(a,b,C)
。@H_674_7@
:在这种简单情况下,如果原始实体被修改为在c中允许空值并添加相应的构造函数,则可以将其用作DTO。如果您的元组是由许多表构成的,则需要创建一个DTO来保存这些值。@H_674_7@
我的控制器@H_674_7@
@GetMapping(value="/getAllDetails")
public List<PriceListEntity> getAllDetails() {
return MyRepository.getAllDetails();
}
我的资料库@H_674_7@
@Repository
public interface MyRepository extends CrudRepository<TestNativeQ,String> {
@Query( value="SELECT qplt.name price_list_name,qplab.status_code,qplab.start_date,(SELECT charge_definition_code FROM oalfsaas_repl.QP_CHARGE_DEFINITIONS_B WHERE charge_definition_id=qplab.charge_definition_id ) chargedefinitioncode "
+ "FROM PriceListEntity qplab,PriceListLineEntity qplt "
+ " WHERE qplab.price_list_id =qplt.price_list_id ",nativeQuery = falsE)
public List<PriceListEntity> getAllDetails();
}
实际结果:@H_674_7@
[{"ABC","DEF","15/05/2018","XXZ"}]
预期结果@H_674_7@
[{name: "ABC",statuscode: "DEF",startDate: "15/05/2018",chargedefintioncode: "XXZ"}]
该查询已联接多个表,并在列级别进行了子查询。@H_674_7@
以上是大佬教程为你收集整理的在Spring Boot,Hibernate中使用@Query注释以JSON格式(键值对)查询结果全部内容,希望文章能够帮你解决在Spring Boot,Hibernate中使用@Query注释以JSON格式(键值对)查询结果所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。