JPA默认值设置没有效果的解决

目录
  • 问题:默认值设置没有效果
    • 解决办法
  • JPA为字段设置默认值

问题:默认值设置没有效果

springboot项目的JPA数据库表的类添加默认值,有2种方法

1、@Column(columnDefinition = "varchar(35) default ‘12345‘ ")

2、@ColumnDefault(“12345”)

要求:设置img字段默认值为/imgs/defunct.png

依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.46</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
</dependency>

映射类

@Data
@NoArgsConstructor
@AllArgsConstructor
@DynamicInsert
@DynamicUpdate
@Entity(name = "tbl_user")
public class UserInfo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @ColumnDefault("\\imgs\\defunct.png")
    private String img;
@ColumnDefault("0")
private Integer studyBegin;
}

数据库设计表字段

只有studyBegin默认值设置为0,img的默认值设置不成功。

解决办法

@ColumnDefault("/imgs/defunct.png")

改为

@Column(columnDefinition = “varchar(255) default ‘/imgs/defunct.png'”)

效果

JPA为字段设置默认值

在使用JPA时,如果需要为属性设置默认值,很自然的,你可能会想到用下面的方式。

@Column(name="state",columnDefinition="tinyint default 0")
private Integer state=0;

但很不幸的是,这种方案有时候并不可行,原因在于columnDefinition是在创建表的时候使用的,如果你的表不是自动生成的。

那我们又需要为属性添加默认值,该怎么办呢,其实很简单,就直接为属性赋值就可以了。

private Integer state=0;

有时候,看起来很复杂的问题,其实换个角度思考,其实就会变得很简单。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Spring boot Jpa添加对象字段使用数据库默认值操作

    目录 项目搭建 代码 配置文件 spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=truespring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.

  • JPA 通过Specification如何实现复杂查询

    目录 JPA 通过Specification实现复杂查询 下面就简单介绍一下Specification的使用 spring-data-jpa Specification拼接复杂查询 JPA 通过Specification实现复杂查询 JPA中继承BaseRepo之后,可以使用最基本的增删改查,如果想实现复杂查询,则需要借助Specification来完成这个功能: 下面就简单介绍一下Specification的使用 public void findAll(ConstructPlanPageReq

  • 解决JPA save()方法null值覆盖掉mysql预设的默认值问题

    目录 JPA save()方法null值覆盖掉mysql预设的默认值 覆盖原因 解决办法 data jpa动态插入(null为sql默认值,utime自动更新 ) JPA save()方法null值覆盖掉mysql预设的默认值 覆盖原因 save()方法在没有参数传进去的时候默认是null值,而mysql表中该字段设置为可以为null值,这时虽然我们设置了默认值,可null值还是会把默认值覆盖掉. 解决办法 将该字段设置为不允许null值即可,这样null值就会被替换为默认值. data jpa

  • 使用jpa之动态插入与修改(重写save)

    目录 jpa之动态插入与修改(重写save) 1.动态插入 2.重写save(修改) 3.启动类 扩展JPA方法,重写save方法 为什么要重构save? 一.重写save 二.扩张jpa方法 jpa之动态插入与修改(重写save) 1.动态插入 @Data @Entity @DynamicInsert @Table(name = "cpu_dynamics_information") @EntityListeners(AuditingEntityListener.class) pub

  • JPA默认值设置没有效果的解决

    目录 问题:默认值设置没有效果 解决办法 JPA为字段设置默认值 问题:默认值设置没有效果 springboot项目的JPA数据库表的类添加默认值,有2种方法 1.@Column(columnDefinition = "varchar(35) default '12345' ") 2.@ColumnDefault("12345") 要求:设置img字段默认值为/imgs/defunct.png 依赖 <dependency> <groupId>

  • MySQL5.7中的sql_mode默认值带来的坑及解决方法

    在正常项目开发过程中,如果MySQL版本从5.6升级到5.7版本.作为DBA在考虑数据库版本升级带来的影响时,一般会有几个注意点: sql_mode optimizer_switch 本文主要内容是MySQL升级到5.7版本之后,由于默认的 sql_mode 值带来的坑以及对应的解决方案. 案例一:ONLY_FULL_GROUP_BY 问题描述 MySQL版本从5.6升级至5.7之后,部分SQL执行报错,报错信息如下: ERROR 1055 (42000): Expression #3 of X

  • django前端页面下拉选择框默认值设置方式

    1,前端样式 2,前端html代码 <select name="row.status"> <option value="ON" {% if row.status == 'ON' %} selected="selected" {% endif %}>ON</option> <option value="OFF" {% if row.status == 'OFF' %} selected=

  • angular select 默认值设置方法

    如下所示: <select ng-model="selected" ng-options="x.id as x.name for x in users"></select> $scope.users = [ {name:'a',id:'1'}, {name:'b',id:'2'}, {name:'c',id:'3'} ]; $scope.selected='2';//id的值,区分类型 $scope.selected=$scope.users

  • Spring Data JPA 设置字段默认值方式

    目录 Spring Data JPA设置字段默认值 Spring Data JPA设置字段默认值失败 Spring Data JPA设置字段默认值 在Column注解中写入以下两个属性,为什么自己查一下文档吧,即可实现字段默认值设置,并顺带解决save方法所生成的sql语句中自动填充字段为null的问题. 默认值无法更新,所以如果想在代码里修改字段默认值,你需要重新建表. @Column(insertable = false,columnDefinition = "int default 1&q

  • 动态设置django的model field的默认值操作步骤

    问题背景 django的model field需要动态设置默认值,具体案例如下: 原始代码如下,model是Application,其中字段ignore_fort的默认值设置为False class Application(TimestampedModel): name = models.CharField(max_length=255, null=True) ignore_fort = models.BooleanField(default=False) 然而现在有这样一个需求:default

  • Mybatis插入语句默认值不生效的问题及解决

    目录 Mybatis插入语句默认值不生效 问题 原因 解决 Mybatis-plus插入修改配置默认值 创建 插入修改默认值设置方法 指定字段 Mybatis插入语句默认值不生效 问题 Mybatis插入语句默认值不生效,但直接在mysql命令行是生效的 Mybatis语句:insert into UserInfo (userName,age,sex) values (#{userName},#{age},#{sex}) 其中 只给userName和age传入值,sex没有传入值,期望用默认值(

  • 解决mybatis查询结果为null时,值被默认值替换问题

    目录 查询结果为null时,值被默认值替换 问题原因 解决办法 mybatis查询结果处理 处理核心流程 返回类型处理ResultHandler 字段类型处理TypeHandler 查询结果为null时,值被默认值替换 问题:pojo种设置了一个默认值,当此字段查询结果为空时,字段值变成了默认值0,经过排查发现,mybatis在赋值时并没有调用set方法赋值,而是直接调用get方法,取了默认值 问题原因 原因是因为mybatis在给map赋值时,如果返回值不是基本数据类型,且返回值为null,就

  • Python使用defaultdict解决字典默认值

    目录 1.导入defaultdict 2.创建defaultdict 3.使用defaultdict 4.添加defaultdict默认值 5.结论 在Python中,defaultdict是一种特殊类型的字典,它可以自动为字典中不存在的键设置默认值.这种类型的字典是在collections模块中定义的.它为我们提供了一个更方便,更容易使用的字典.在这篇文章中,我们将深入探讨Python中的defaultdict,并探讨如何使用它们. 1.导入defaultdict 我们需要先导入包含defau

  • 使用jQuery给input标签设置默认值

    由于项目需求,简单地写了一个input默认值设置,实现给.form中所有的input设置默认值的方法. <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>input默认值设置</title> <script type="text/javascript" src="http://apps.bdimg.com/li

随机推荐