为什么80%的码农都做不了架构师?>>>   

任何ORM框架都少不了开放自定义sql的问题。jpa自然也不例外,很多场景需要写复杂sql的。

首先定义一个方法签名,然后打上@Query注解。像下面这样,需要注意nativeQuery,这个表示query中的字符以原始的sql语句执行,也就是不做任何调整。你写啥,就执行啥sql语句。但是想返回自定义的实体,Sorry,做不到。的用另一种方式。

@Query(value = "SELECT * from table where id= :id", nativeQuery = true)
List<aa> getByaaId(@Param("id") BigInteger id);

方法一

下面这个就是实现自定义的实体方法。首先需要定义个实体,这个实体必须包含无参和全参构造函数。然后去掉nativeQuery,同时还有一点必须注意,写的语句里面不是数据库中对应的实际表名,而是你定义的实体映射。比如下面的table1和table2,其实都是你定义的实体类的名字,不是你的数据库表名,是你代码中映射数据表的实体类名。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class aaDto {private String aa;private String bb;private String cc;}
@Query(value = "SELECT new com.xxx.xxx.dto.aaDto(i.aa,i.bb,i.cc) FROM table1 i JOIN table2 e on i.id=e.id")
List<aaDto> getList();

方法二

方法一这种写法还是非常不灵活,有时候写一些函数什么的,估计会搞死,还是得写原生的sql才行。我说的查询字段属于多个表。如果只查询一个表字段,关联查询只是条件,可以直接返回对应的实体也是没问题的。

List<Map<String, Object>>
@Query(value = "SELECT a.aa,b.bb from a LEFT JOIN b a.id=b.id", nativeQuery = true)
List<Map<String, String>> getFundAccountList();

这样返回的数据就是一个集合,是键值型的,如果我们实在想用对象,不用Map,我是先把返回参数序列化成json,然后将这个json再反序列化成我们想要的对象即可。

记录一个错误:Path expected for join!

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join!

就这么个错误,其实很简单,只是我没有细看错误信息,导致在正确的语句找错误,找不到。出现这个错误,后面会跟你写的hql语句,注意留意这个hql语句,仔细检查,他一定是有错误的。

有个博客说需要添加映射关系,其实完全不用的,就是一对多,A类里面包含List<B> 是不需要这样的,独立类没任何关联也是可以的,细心细心细心。。。

顺带再来记录一个问题吧,这个问题简单,出现下面这段代码,后面会跟一些信息,根据信息就可以知道是返回对象的构造函数类型问题,既然这样,那就调整下返回实体对象的属性类型即可。

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate appropriate constructor on class

转载于:https://my.oschina.net/uwith/blog/3028205

springboot jpa 自定义返回对象相关推荐

  1. JPA 自定义返回字段

    实体类:User.java @Data @Accessors(chain = true) @EqualsAndHashCode(callSuper = true) @Entity @Table(nam ...

  2. springboot jpa自定义SQL查询

    说明 在使用JPA实现数据持久化过程中经常会遇到这种情况:我有2张表是一对多的关系,需要通过一个外键ID去关联查询到另外一张表的字段.例如,1张商品表food_info其中存有商品分类ID categ ...

  3. flask自定义返回response

    文章目录 flask自定义返回response 直接通过函数返回 介绍一下 `jsonify` 通过构建 返回对象 总结 参考文档 flask自定义返回response Flask 框架在python ...

  4. JPA自定义VO接受返回结果集(unwrap)

    JPA跟mybitis比较,简单的业务搜索是方便的,但是设计到复杂的SQL搜索时,我们需要自定义SQL. 1.@Query直接写SQL,缺点是无法动态的组装条件 2.JPA的Specification ...

  5. springboot控制接口返回的字段_SpringBoot实战:SpringBoot之Rest Full接口自定义返回数据类型(ResponseBodyAdvice)...

    我们在日常开发的过程中,经常会要求统一返回数据格式.如要求统一访问格式为 { "success": 请求是否成功, "message": 请求消息, " ...

  6. springboot异步任务带自定义返回结果和异步任务查看。

    前言:由于多年在写的都是python,经常在做一些异步任务时,如导入导出报表这种,都是用celery来做异步生成表格,然后循环更新任务状态,任务结束后返回文件名或其他结果.最近某个项目采用java的s ...

  7. java sql sum函数的使用方法,Springboot jpa使用sum()函数返回结果如何接收

    1.需求 我的需求是统计域名以及域名出现的次数. 之前使用springboot jpa都是把数据库中的表跟实体类绑定,创建继承JpaRepository的接口.如下: @Repository publ ...

  8. Hibernate5 返回自定义类对象列表(替代setResultTransformer deprecated)

    映射Table的实体类 public class com.centerm.A {private Integer id;private String name;private String passwo ...

  9. springboot 自定义返回值处理器HandlerMethodReturnValueHandler

    WEB开发中有这样的需求: 返回给前台的数据需要有统一格式.但是在controller的每个mapping中手写包装很是麻烦,所以可以自定义返回值处理器进行结果包装. 文章目录 返回给前台的消息格式 ...

最新文章

  1. tideways+xhgui搭建php 7的性能测试环境
  2. 使用DCIM软件确保数据中心符合DCOI
  3. Java多线程编程 — 锁优化
  4. 怎么把线稿提取出来_【PS技巧】如何用PS快速提取线稿?
  5. 一种全新易用的基于Word-Word关系的NER统一模型,刷新了14种数据集并达到新SoTA...
  6. 斐讯K2路由器刷机_潘多拉PandoraBox固件
  7. QQ用户文件夹下即(user文件夹) 各个文件都是干什么的
  8. 无监督学习之稀疏编码,自编码
  9. TortoiseGit安装中文语言包无法切换语言
  10. 哥德巴赫猜想 php,C++_c++验证哥德巴赫猜想,哥德巴赫猜想是世界近代三大 - phpStudy...
  11. GitHub创建仓库
  12. 打印机乱码故障解决办法
  13. 什么软件打印二维码和条形码?
  14. 怎么从pdf中提取图片
  15. 电子发票税费计算问题
  16. 学生体育运动主题网页设计——兵乓球国乒网(纯HTML+CSS代码)
  17. 假设检验:一个总体参数的检验、总体方差检验、两个总体参数的检验和两个总体方差的检验
  18. php 判断是否微信访问,PHP判断是否微信访问的方法示例
  19. Amber小分子-蛋白复合体分子动力学模拟
  20. 王小川讽刺李彦宏活在平行宇宙,百度回击;字节盈利增八成,首超腾讯阿里;优酷回应非会员收看3000秒广告 | EA周报...

热门文章

  1. 经济民族主义的前夜?普华永道思略特全球创新1000强解读
  2. Clubhouse 本土化之后干得过“顶流”抖音快手吗? | 极客视频
  3. 单身人数减少?平均年薪 15 万+?今年的程序员可不一般!
  4. 如何用一句话证明你是程序员?41 个答案揭晓!
  5. 面向全场景的鸿蒙操作系统能有多安全?
  6. Spring+SpringMVC+MyBatis深入学习及搭建(十一)——SpringMVC架构
  7. iOS实现ScrollView中子控件(Button,自定义View)的触摸事件响应
  8. vuejs学习笔记(1)--属性,事件绑定,ajax
  9. thinkphp 3.2加载类
  10. 产品经理技能树之 数据体系