欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-10 13:28:12
目录问题:默认值设置没有效果解决办法jpa为字段设置默认值问题:默认值设置没有效果springboot项目的jpa数据库表的类添加默认值,有2种方法1、@column(columndefinition...

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

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;
}

数据库设计表字段

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

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

解决办法

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

改为

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

效果

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

jpa为字段设置默认值

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

@column(name="state",columndefinition="tinyint default 0")
private integer state=0;

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

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

private integer state=0;

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

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