202207-11 聊聊Spring data jpa @query使用原生SQl,需要注意的坑 目录Springdatajpa@Query使用原生Sql的坑根据代码来解说:需要注意的方法有以下几点SpringDataJPA@Query动态SQL语句思路实现Springdatajpa@Query使用原生Sql的坑根据代码来解说:@Query(value="selectbill.id_asid,bill.created_dateasdate,bill.no,lawyer_case.case_noascaseNo,"+"lawyer_case.case_nameascaseName,customer.noascustomerNo,customer.cn_nameascustomerName,"+... 继续阅读 >
202207-11 SpringBoot使用JPA实现查询部分字段 目录SpringBootJPA查询部分字段自定义简单的查询方法SpringBootJPA查询部分字段用过JPA的都知道,只需要继承JpaRepository根据Jpa的函数命名规范写出接口中的函数,不需要实现,底层就可以自动解析成各种数据库的sql语句,进行增删改查等操作。自定义简单的查询方法如findByUserName,findByUserNameOrEmail(Stringusername,Stringemail)等条件的属性名称与个数要与参数的位置与个数一一对应,JpaRepository能够解析方法名自... 继续阅读 >
202204-07 JPA findById方法和getOne方法的区别说明 目录findById方法和getOne方法区别getOne()方法是JpaRepository接口中定义的再看findById()方法spring-data-jpa中findById()的使用findById方法和getOne方法区别Jpa基础的CRUD方法继承自接口CrudRepository<T,ID>,包含以下方法:<SextendsT>Ssave(Sentity);<SextendsT>Iterable<S>saveAll(Iterable<S>entities);Optional<T>findById(IDid);booleanexistsById(IDid);Iterable<T>findAll();Iterable<T>findAllById... 继续阅读 >
202201-22 解决spring jpa中update的坑 springjpa中update遇到的坑使用jpa自己编写update语句,遇到问题:1.在同一个service事物中,先执行保存,在执行更新,紧接着执行查询--查询结果为更新前的结果。2.执行自定义update方法结束后执行查询查出结果依然为update前的结果集解决问题所在:自定义update并未清空实体缓存。注解@Modifying加参数eg:@Modifying(clearAutomatically=true)jpa更新问题记录使用jpa去更新:@Modifying(clearAutomatically=true),@Transa... 继续阅读 >
202201-17 使用jpa的时候set实体类属性自动持久化的解决方案 使用jpa的时候set实体类属性自动持久化实例代码Set<User>users=newHashSet<User>();Useruser=null;for(inti=0;i<10;i++){user=newUser();user.setUserName("wy"+i);users.add(user);}Companycompany=userDao.getCompany();company.setUsers(users);当使用了实体类set属性的时候,但是我们并没有持久化,却自动保存到数据库了。原因Hibernate分为三种基本的状态:游离态、自由... 继续阅读 >
202201-12 解决Spring JPA 使用@transaction注解时产生CGLIB代理冲突问题 SpringJPA使用@transaction注解时产生CGLIB代理冲突在使用JPA进行数据库的删除操作时需要使用@Transactional注解来支持事物:@Modifying@Transactional@Query("deletefromFollowerInfo"+"wherecrmAuth=:crmAuthandinvestUserId=:invUserId")voiddeleteByCrmAuthAndInvUserId(@Param("crmAuth")StringcrmAuth,@Param("invUserId")LonginvUserId);但是,在添加了如上方法后,测试服务... 继续阅读 >
202112-13 基于JPA中的@Basic注解详解 今天我们来聊聊JPA@Basic注解的使用1.介绍:@Basic是实体类与数据库字段映射时最简单的类型。在该注解的介绍中:The<code>Basic</code>annotationcanbeappliedtoapersistent*propertyorinstancevariableofanyofthefollowingtypes:Java*primitivetypes,wrappersoftheprimitivetypes,<code>String</code>,*<code>java.math.BigInteger</code>,*<code>java.math.BigDecimal</code>,*<code>java.... 继续阅读 >
202112-13 springboot 中 druid+jpa+MYSQL数据库配置过程 Druid来自于阿里的一个开源连接池能够提供强大的监控和扩展功能,SpringBoot默认不支持Druid和jpa,需要引入依赖。1、引入依赖包<!--druid--><!--https://mvnrepository.com/artifact/com.alibaba/druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.22</version></dependency><!--jpa--><dependency><groupId>org.springframework.boot... 继续阅读 >
202112-13 JPA @Basic单表查询如何实现大字段懒加载 JPA@Basic单表查询实现大字段懒加载近期看了JPA@Basic注解的使用,看到该注解可以设置字段的懒加载。1.以前碰到的懒加载:我们知道,多表关联的时候,我们是可以配置懒加载的,比如一个Company类,里面可以关联员工表,办公设备表,当我们查看公司信息的时候,我们并不需要直接加载员工表,办公设备表,只需要在用户查看员工,查看设备的时候再加载,这样可以提高加载效率。长话短说,大概是这样子的@Entity@Table(name="Comp... 继续阅读 >
202110-28 springboot jpa 延迟加载问题的2种解决 springbootjpa延迟加载问题在springboot中,在application.properties的配置文件中新增spring.jpa.open-in-view=true方法失效经过测试,有两种解决办法:1、在application.properties的配置文件中新增spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true;2、在测试的方法上添加@Transactional注解。关于springboot延迟加载懒加载或者延迟加载是指spring容器启动的时候先不把所有的bean都加载到spring的容器中去,... 继续阅读 >
202109-29 Springboot使用Spring Data JPA实现数据库操作 SpringBoot整合JPA使用数据库是开发基本应用的基础,借助于开发框架,我们已经不用编写原始的访问数据库的代码,也不用调用JDBC(JavaDataBaseConnectivity)或者连接池等诸如此类的被称作底层的代码,我们将从更高的层次上访问数据库,这在Springboot中更是如此,本章我们将详细介绍在Springboot中使用SpringDataJPA来实现对数据库的操作。JPA&SpringDataJPAJPA是JavaPersistenceAPI的简称,中文名Java持久层API,是... 继续阅读 >
202109-28 解析Spring Data JPA的Audit功能之审计数据库变更 目录一、数据库审计二、SpringDataJPA审计2.1、项目准备2.2、创建实体父类2.3、如何获取名字2.4、测试三、总结一、数据库审计数据库审计是指当数据库有记录变更时,可以记录数据库的变更时间和变更人等,这样以后出问题回溯问责也比较方便。对于审计表记录的变更可以两种方式,一种是建立一张审计表专门用于记录,另一种是在数据库增加字段。本文所讨论的是第二种方案。那如何在新增、修改、删除的时候同时增加记录呢?如果每张... 继续阅读 >
202108-31 JPA如何使用entityManager执行SQL并指定返回类型 下面是代码Queryquery=entityManager.createNativeQuery(yourSql);//指定返回类型query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(yourClass));//获取返回集合ListresultList=query.getResultList();注:此方法不支持枚举类的自动转型,需要在entity中改一下枚举类的set方法。如下://此处传入String类型publicvoidsetCheckResult(StringcheckResult){//调用枚举类的valueOf方法this.... 继续阅读 >
202108-31 Spring Data JPA使用JPQL与原生SQL进行查询的操作 1、使用JPQL语句进行查询JPQL语言(JavaPersistenceQueryLanguage)是一种和SQL非常类似的中间性和对象化查询语言,它最终会被编译成针对不同底层数据库的SQL语言,从而屏蔽不同数据库的差异。JPQL语言通过Query接口封装执行,Query接口封装了执行数据库查询的相关方法。调用EntityManager的Query、NamedQuery及NativeQuery方法可以获得查询对象,进而可调用Query接口的相关方法来执行查询操作。JPQL是面向对象进行查询... 继续阅读 >
202108-26 使用jpa原生sql@Query操作增删改查 jpa原生sql@Query操作增删改查1、jpa原生update的sql语句:1.命名参数(推荐使用此方式):可以定义好参数名,赋值时使用@Param("参数名"),而不用管顺序。为@Query注解传递参数的方式1:命名参数/*@Query("deletefromproductwherep.id=:id")List<Person>testQueryAnnotationParams2(@Param("status")Stringstatus,@Param("id")Stringid);voidupdateByProductId(@Param("id")Stringid);*/2.索引参数如下所示,索引值... 继续阅读 >
202108-25 Spring Data JPA中 in 条件参数的传递方式 关于SpringDataJPA中自定义sql条件的in参数记录此文做一个记录,以便以后观看,也希望正在遇到同样问题的同学能有所启发,如果你有更好的方法,或我的做法有问题,请告知下,非常感谢。下面写两种简单做法,注意下地方:在此我只记录HQL中in后面参数问题,细节查询方法相关代码就略过,还请见谅查询接口:/****paramString:自定义hql**paramMap:hql中查询条件的参数**start:数据开始条数**max:最大数据条数**/pu... 继续阅读 >