springboot JPA动态生成 sql 语句出现的问题

springboot 采用 @DynamicInsert 动态生成 sql 语句时,我采用的 springboot JPA的 save()放大时,如果没有设置主键会抛出空指针异常。我数据库的主键自增策略是 auto.

0

2个回答

0

我最近使用springboot的时候也遇到跟你一样的问题
看我的BaseModel

 public class BaseModel implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    protected BaseModel(){
        this.id = 1L;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public boolean equals(Object other) {
        if (other == null || other.getClass() != this.getClass())
            return false;
        if(this.getId() == null || ((BaseModel) other).getId() == null) return false;
        return this.getId().equals(((BaseModel) other).getId());
    }

    public int hashCode() {
        return new HashCodeBuilder().append(getId()).toHashCode();
    }

}

这里的BaseModel是我的实体类的父类,我错误的原因是序列化没有重写好equals函数,因为动态生成sql语句的时候主键默认为null,无法识别这是不是一个新的对象(我的理解),所以重写的时候多了

 if(this.getId() == null || ((BaseModel) other).getId() == null) return false;

因为主键不为空,为null肯定不相等。我就这样解决了,不知道能不能帮到你了。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Spring Boot Jpa之构建动态SQL查询语句
Spring Boot Jpa构建动态SQL查询语句引入依赖包:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>DAO接口继承JpaSpecificationExecutor<T>。该接
springboot jpa之复杂查询语句(会一种即可)
注意,jpa的复杂查询有很多种方式,原则上能实现自己的要求即可,无需全部掌握,故这里就介绍一种,只要你知道继承JpaRepository意味着什么,我相信你是看得懂的! 不要害怕未知,否则一辈子都跨不过去! 1、总体上来说,对于自己编写复杂查询语句的,先是在UserRepository(持久层)继承JpaSpecificationExecutor&amp;amp;lt;T&amp;amp;gt;(这个T就是你要操作的...
SpringBoot JPA中使用中如何写原生SQL
@Query(nativeQuery=true,value = &quot;&quot;) value里写正常sql语句 如果返回的是数据库对应的实体对象,那么sql的返回结果集字段别名中应该与该实体类中对应的数据库字段名一致,可以有多余字段,但不能少字段,nativeQuery代表本地数据库的sql语句 上一个稍微复杂的sql, 占位符用&quot; : &quot;, public interface TXhCodeRepos...
Springboot jpa写法自定义sql中,传进自定义对象作为参数
    后来研究一下@Query     @Query注解的用法(Spring Data JPA) 参考文章:http://www.tuicool.com/articles/jQJBNv   1. 一个使用@Query注解的简单例子 @Query(value = &quot;select name,author,price from Book b where b.price&amp;gt;?...
springboot + jpa 启动报警之SQL异常
2017-11-15 18:48:27[org.hibernate.hql.internal.ast.ErrorCounter]-[ERROR] line 1:70: unexpected token: or 2017-11-15 18:48:27[org.hibernate.hql.internal.ast.ErrorCounter]-[ERROR] line 1:70: unexpected
使用spring-boot-starter-data-jpa 怎么配置使运行时输出SQL语句
在 application.properties 中加入以下配置spring.jpa.show-sql=true
data jpa扩展支持动态sql
data jpa扩展支持动态sql更多干货分布式实战(干货)spring cloud 实战(干货)mybatis 实战(干货)spring boot 实战(干货)React 入门实战(干货)构建中小型互联网企业架构(干货)前言一般在写业务接口的过程中,很有可能需要实现可以动态组合各种查询条件的接口。如果我们根据一种查询条件组合一个方法的做法来写,那么将会有大量方法存在,繁琐,维护起来相当困难。想要...
SpringBoot 在日志中显示sql
JPA Hebernate项目中需要输出sql语句,可以用如下方式 spring: jpa: show-sql: true mybatis中可以使用如下方式 logging: config: classpath:logging-config.xml level: com.yd.boxtest.dao: debug #dao所在的包文件 org.spri...
Spring Boot 在日志中显示sql语句
在使用Spring Boot进行开发时,有时我们为了调试方便,需要输出sql语句,尝试了以下两种办法: show-sql spring: jpa: show-sql: true 不管用 logging logging: level: org: hibernate: SQL: DEBUG 管用 打印效果如下: 也可以...
springboot jpa Query使用原生SQL例子--测试通过
private EntityManagerFactory emf; @PersistenceUnit//使用这个标记来注入EntityManagerFactory public void setEntityManagerFactory(EntityManagerFactory emf) { this.emf = emf; } @Test
jpa动态sql创建的相关问题
参考:http://www.cnblogs.com/happyday56/p/4661839.html 如果需要or关系连接条件, 应该是在最后面,将条件predicates链表 List&amp;lt;Predicate&amp;gt; predicates = new ArrayList&amp;lt;Predicate&amp;gt;(); 。。。。。(中间省略的是添加查询条件的代码)   Predicat...
spring boot jpa 使用原生sql查询,特此记录。
 嗯哼,2018年7月18号特此记录,使用java spring boot + jpa 开发后端,进行数据库增删改查(使用原生sql)进行。因为是第一次写,仅仅是为了记录,方便以后查看,写的不好还请见谅。 package com.jony.keer.repository; import com.jony.keer.entity.PersonModel; import com.jony.kee...
Spring boot 使用jpa分页查询,不需要写SQL语句, 正确使用 Pageable,以及 Page<T>转换为List
使用了spring boot配合jpa,感觉是挺不错的。做一个简单的mysql数据库分页查询 很简单,直接上代码了。 import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pa...
SpringBoot jpa实现自定义语句分页查询
例:1.JPA持久层 InvoiceRepository.java @Repository public interface InvoiceRepository extends JpaRepository&amp;lt;Invoice, Integer&amp;gt; { @Query( value = &quot;SELECT * from invoice_apply whe...
Springboot JPA执行原生SQL,自定义SQL占位符增加参数
 JPA 实际上就是 Hibernate  的封装,根据Interface 方法名,生成对应的方法,也支持Query注解的方式和原生SQL,原生SQL如下: 1、注解@Query方式执行原生SQL语句: @Query(value = &quot;select * from table_car_mark limit 0,10&quot;,nativeQuery = true) List&amp;lt;CarsMark...
jpa hibernate 打印sql,format日志,打印SQL参数,打印什么指令
环境说明:IntelliJ IDEA 2017.3.4 版本;SpringBoot 2.0.0.RELEASE;hibernate用的是JPA自带。 打印SQL 到控制台: 首先,我使用的是application.properties配置文件,使用yml也可以达到同样的效果。 在网上查这个问题查了好久,基本上都是xml配置,在此不多说; 正确的properties配置项应该如下图所示: ...
Spring-data-JPA生成JPQL语句方法名称中支持的关键字
方法名称中支持的关键字关键字 示例 JPQL 片段 And findByLastnameAndFirstname … where x.lastname = ?1 and x.firstname = ?2 Or findByLastnameOrFirstname … where x.lastname = ?1 or x.firstname = ?2 Is,Equals findByFirstname,
Spring Boot配置hibernate显示sql语句和格式化sql语句
server.port=8989 spring.datasource.url=jdbc:mysql://localhost:3306/weather?useUnicode=true&amp;amp;characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=123456 spring.datasou...
Jpa操作数据库之动态SQL语句的使用
第一次使用Jpa,之前都是使用的SSM,现在公司换框架为SpringBoot,随之持久层也换为了Jpa,个人感觉Jpa跟Hibernate使用有些相似,好了,废话不多说,上需求,一个表里包含字段[name 名称,cityid 城市ID  , parent 父级ID],前台根据这三个字段实现条件查询,这三个参数都不是必须传的,可能前台只给一个,也可能会给多个,按照前台传参去查询数据,如果用以前的SS
SpringBoot项目 使用Sprin Data Jpa 实现数据库的 增 ,删, 改, 查操作
1:首先建立查询接口类,该接口继承JpaRepository2:在测试时最好是分三层进行测试,操作数据库放在Service3:接下来就是具体的操作/** * 查询所有 */ public List&amp;lt;User&amp;gt; queryList() { List&amp;lt;UserEntity&amp;gt; listUser = userJpa.findAll(); List&amp;lt;Use...
【spring boot】【log4jdbc】使用log4jdbc打印mybatis的sql和Jpa的sql语句运行情况
在spring boot 中使用mybatis 想看到sql语句的运行情况。 虽然按照 之前说的配置了 logging.level.你的mapper包位置 = debug  但是依旧没有起作用。   所以采用这种方式: 只需要相对于原来的项目修改两步 1.加入引用 &amp;lt;!--打印sql--&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;...
jpa 操作mysql 别名问题
在使用jpa连接,mysql的时候,如果查询语句中有别名 例如:select  uname as 名称 from user 这样的语句的时候,就会出现 could not execute query 这样的问题,这个问题是由于mysql别名未开启, 把数据库连接字符串修改为一下格式就行了,注意红色部门就可以了 jdbc:mysql://localhost:3306/orc
Spring Boot DATA JPA抓取SQL运行时的传递进去的参数信息
     在系统开发过程中,涉及到数据库操作都是SQL的天下,基于ORM的各类框架来简化开发;在JPA/Hibernate方案中,只提供了SQL的打印输出,但并未输入SQL的参数值是多少,这里将解决这个问题,告知具体如何来实现这个操作。 1.  技术栈的介绍    JDK 1.8,  Spring Boot 2.0.3.RELEASE, Mysql 5.7 2.  依赖包     Spri...
logback 配置打印 JPA SQL日志到文件
Logback 输出 Hibernate SQL日志 到文件 使用Spring Boot 配置 JPA 时可以指定如下配置在控制台查看执行的SQL语句 spring.jpa.show-sql=true Spring Boot 默认的日志配置不会输出到文件,若要打印日志到文件,可以使用如下配置: #llogging.level后跟要打印日志的包名或类的全限定名,设置打印级别 # 日志级别...
springBoot JPA 查询中出现的问题
springBoot JPA 问题汇总
SpringBoot系列 使用JPA进行复杂条件拼接查询
前几天在一个大神的博客中看到有人留言 谈到SpringBoot JPA在复杂的SQL拼接查询时显得力不从心! 不如MyBatis方便个人感觉有些片面, JPA用好了 开发起来真实感觉太舒服了, 就是学习成本稍微高那么一点点 网上能够给出的好的方案也不是很多在这里 我就写个例子 提供大家参考首先是Entity 这是代码片段 其实没啥可以研究的@Entity @Table(name = &quot;t_stoc...
Springboot JPA 执行原生sql ,自定义SQL占位符增加参数
 JPA   实际上就是  Hibernate  的封装,根据Interface 方法名,生成对应的方法,也支持Query注解的方式。现在说说执行原生  SQL  。 1、注解@Query方式执行原生SQL语句:   @Query(value=&quot;select user.id from user where user.id =15&quot;, nativeQuery = true) public...
springboot-jpa操作数据库
    JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。  JPA包括以下3方面的技术:  1.ORM映射元数据。JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;  2.API。用来操作实体对象,执行CRUD操作,框架...
关于springboot 不打印sql日志的问题的记录
搭建完了springboot+mybatis 后,测试时,发现没有打印sql日志,查了下,发现没有在application.yml配置文件中加入 logging: level: com: demo: api: mapper: generate: debug com.demo:.api:.mapper:是mapper的路径,加上后就会打印sql日志了 ...
Spring Boot下基于JPA抓取SQL运行时的参数值
引言: 在系统开发过程中,涉及到数据库操作都是SQL的天下,基于ORM的各类框架来简化开发;在JPA/Hibernate方案中,只提供了SQL的打印输出,但并未输入SQL的参数值是多少,这里将解决这个问题,告知具体如何来实现这个操作。
Spring Data JPA 动态拼接条件的通用设计模式
官方文档是首选
springboot2+jpa 最新的原生sql结果集转为自定义对象
可以查看我的码云上的demo  https://gitee.com/lgtt/springboot-jpa 封装了entityManager可以转换自定义的对象,路径test-&amp;gt;ContactTest-&amp;gt;findDeviceVOTest 转载请注明转自文章地址  ...
spring boot设置控制台打印SQL
如何设置spring boot集成 mybatis 然后sql语句打印到控制台,方便调试: 设置方法: 在application.properties文件中添加: logging.level. com.th.multiplanning.document=DEBUG 或在application.yml(或bootstrap.yml)文件中添加 logging: level: ...
springboot根据表名和字段查询和更新实现动态sql(jpa,mybatis)
最近需要做一个根据表名和字段更新表的功能,项目结构是springboot+jpa,记录如下:1.经查阅资料jpa和hibernate自带对原生sql的支持都是不支持该操作的,原因是:jpa和hibernate在进行参数替换的时候是使用占位符的形式,防止了sql的注入,在解析会给参数带上单引号,但是可以通过定义原生的sql进行解决动态sql查询,但无法实现动态sql更新,如果需要更新必须获取到表对应...
在springBoot在控制台打印sql语句
在springBoot在控制台打印sql语句 在springBoot+Mybatis日志显示SQL的执行情况的最简单方法就是在properties新增: properties形式 logging.level.com.eth.wallet.mapper=debug yml形式 logging: level: co...
Hibernate JAP 字段自动添加下划线问题,
数据库中的字段名是productName,实体中应当这样写     @Column(name = "productname")     private String productName; 如果按照数据库中字段ProductName,一样注解在实体类@Column(name = "productName") 执行sql语句时,会把驼峰字符转化为"_"+ 小写驼峰字符,查询时会变成pr
SpringDataJpa save操作提示sql语法错误
错误提示: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use ne...
jpa分页遇到的错误,sql命令没正确结束
在使用jpa做分页查询的时候报了一个错误 java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束     需要在application.properties增加以下配置 #hibernate数据库方言配置: #org.hibernate.dialect.Oracle9iDialect,org.hibernate.dialect....
spring data jpa 想使用EntityManager 对sql 进行处理四种方式(第四种本人改写的)
spring data jpa 想使用entityManager 对sql 进行处理四种方式(第四种本人改写的)
spring boot数据库问号问题
spring boot数据库问号问题 spring.datasource.url = jdbc:mysql://localhost:3306/dbmedicine?useSSL=true&amp;amp;characterEncoding=UTF-8 就是这样一条语句可能找好几个小时
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java学习常出现的问题 java 用学习jpa吗