由于项目需求,接触了Java Data JPA +hibernate,它的调用方式是controller调用service,service有实现的接口serviceimpl,serviceimpl调用Dao,Dao中用注解@Query写HQL语句(如果要直接写原生的SQL语句@Query中加value="sql语句",nativeQuery=true),要新增或者修改或者是删除时除了加@Query还要加@Modifying注解才能生效。

多表联查用一个vo对象包含你所需要的字段,例如:

@Query("select new com.catsic.casee.yn.law.entity.SfmVo(sfm.dm,sfm.sfmc,sfm.sfjc,sfm.orderid,gsb.dm as odm , gsb.mc as odmmc) from Sfm sfm left join Qxgsbmb gsb on sfm.sfmc = gsb.sfmc where gsb.parentdm like %?1% order by gsb.layer asc")

public List<SfmDto> findSfm_GsbJoin(String parentdm);

SfmVo就是你所需的对象,new时字段名称一一对应,大小写对应。

第二种方法用一个map接受Map<String, Object>就像key-value

@Query(value = "select new map(sfm as sfm ,gsb as gsb ) from Sfm sfm left join Qxgsbmb gsb on sfm.sfmc=gsb.sfmc where gsb.parentdm =:parentdm")
List<Map<String, Object>> findSfm_GsbJoin2(@Param("parentdm") String parentdm);

1.特别遇到的 坑是,新增的实体包含Timestamp类型,对应数据库的Datat类型。新增时hibernate会把Timestamp类型直接保存为Datat类型。

但是如果数据库是Datat类型,你查询后获得的是String类型,就和你接收Vo的Timestamp类型不符合。总报错。这时候你的把接收到的String类型转换为Vo的Timestamp类型,那Vo类就能正常接收了。

2.如果使用nativeQuery=true的SQL语句,返回List<Map<String,Object>>,提示数组越界的话index1 size 1 ,但是SQL语句能正确查询出来,那么可能的form 后表太多,可以再用一个select查询包含所有表试试。

Java Data JPA +hibernate 保存或者是查询遇到的坑的更多相关文章

  1. SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法

    软件152 尹以操 首先谢谢大佬的简书文章:http://www.jianshu.com/p/45ad65690e33# 这篇文章中讲的是spring中使用spring data jpa,使用了xml ...

  2. spring data jpa 使用方法命名规则查询

    按照Spring Data JPA 定义的规则,查询方法以findBy开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性首字母需大写.框架在进行方法名解析时,会先把方法名多余的前缀 ...

  3. 【hql】spring data jpa中 @Query使用hql查询 问题

    spring data jpa中 @Query使用hql查询 问题 使用hql查询, 1.from后面跟的是实体类 不是数据表名 2.字段应该用实体类中的字段 而不是数据表中的属性 实体如下 hql使 ...

  4. Spring Boot 2.x 之 Spring Data JPA, Hibernate 5

    1. Spring Boot常用配置项 基于Spring Boot 2.0.6.RELEASE 1.1 配置属性类 spring.jpa前缀的相关配置项定义在JpaProperties类中, 1.2 ...

  5. spring data jpa hibernate jpa 三者之间的关系

    JPA规范与ORM框架之间的关系是怎样的呢? JPA规范本质上就是一种ORM规范,注意不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由服 ...

  6. Spring Data JPA 实现多表关联查询

    本文地址:https://liuyanzhao.com/6978.html 最近抽出时间来做博客,数据库操作使用的是 JPA,相对比 Mybatis 而言,JPA 单表操作非常方便,增删改查都已经写好 ...

  7. 使用Spring Data JPA的Specification构建数据库查询

    Spring Data JPA最为优秀的特性就是可以通过自定义方法名称生成查询来轻松创建查询SQL.Spring Data JPA提供了一个Repository编程模型,最简单的方式就是通过扩展Jpa ...

  8. spring data jpa 使用JPQL的方式查询

    用Spring Data JPA提供的查询方法已经可以解决大部分的应用场景,但是对于某些业务来说,我们还需要灵活的构造查询条件,这时就可以使用@Query注解,结合JPQL的语句方式完成查询 @Que ...

  9. Spring Data JPA 复杂/多条件组合查询

    1: 编写DAO类或接口  dao类/接口 需继承 public interface JpaSpecificationExecutor<T> 接口: 如果需要分页,还可继承 public ...

随机推荐

  1. 安卓apk反编译

    在win环境反编译安卓APP的.apk文件 安卓apk 反编译为 Java源码图文教程 Android安全攻防战,反编译与混淆技术完全解析(上)

  2. 复习sql server 2000 MSDE2000 ,安装,打补丁,开1433端口。

    前言: 由于工作需要,一个仍在使用的古董软件需要安装配置. 原有系统是在主机部署,单机安装sql2000,其他机器(分机)也单机部署软件,部署sql2000,通过dtsrun /f sync.dts( ...

  3. HTTPS小结 、TSL、SSL

    https://segmentfault.com/a/1190000009020635

  4. Appium移动自动化测试-----(六)2.AppiumDesktop录制脚本生成极简脚本

    AppiumDesktop启动页面: 启动AppiumDesktop以后点击该页面右上角的Start New Session按钮,就会启动一个新的会话窗口(如下图),在这个窗口我们需要配置一些Desi ...

  5. 任务调度Quartz.Net之Windows Service

    这个应该是关于Quartz.Net使用的最后一篇文章了,之前的介绍都是基于Web的,这种实现任务调度的方式很少见,因为不管是MVC.WebApi还是WebService,它们都需要寄宿在IIS上运行, ...

  6. [转帖]14-使用glusterfs做持久化存储

    14-使用glusterfs做持久化存储 https://www.cnblogs.com/guigujun/p/8366558.html 使用glusterfs做持久化存储 我们复用kubernete ...

  7. Apache Shiro初认识

    Apache Shiro 一.Shiro介绍: Apache软件基金会专门针对系统中的登录.加密.权限认证.授权等等功能进行了封装,不仅仅适用于JavaWeb项目,CS架构的系统也可以使用Shiro. ...

  8. JSP的部分知识(一)

    通过Servlet进行整个网站的开发是可以的. 不过在Servlet中输出html代码,特别是稍微复杂一点的html代码,就会给人一种很酸爽的感觉. 如果能够直接使用Html代码,然后在html中写j ...

  9. 从零开始学Flask框架-001

    新建项目 目录结构 Index.html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  10. WUSTOJ 1320: 饭卡(Java)动态规划-背包

    题目链接: