当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2021-12-01
目录 问题:默认值设置没有效果 解决办法 JPA为字段设置默认值 问题:默认值设置没有效果 springboot项目的JPA数据库表的类添加默认值,有2种方法 1 、 @Column(columnDefinition = "varchar(35)
目录
  • 问题:默认值设置没有效果
    • 解决办法
  • 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;

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

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

    上一篇:java实现简单猜拳小游戏
    下一篇:没有了
    网友评论