JPA设置默认字段及其长度详解

作者:我的天才女友

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。本文主要介绍了JPA如何设置默认字段及其长度,感兴趣的同学可以了解一下

使用jpa去生成对应的值的长度和默认值是如何设置的呢

@Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface Column { String name() default ""; boolean unique() default false; boolean nullable() default true; boolean insertable() default true; boolean updatable() default true; String columnDefinition() default ""; String table() default ""; int length() default 255; int precision() default 0; int scale() default 0;
  • name 属性用来设置字段的名字
  • unique用于设置这个字段是否是是唯一的
  • insertable和updatable、table都是和表更新相关的操作,
  • length 指定长度,默认是255
  • precision 数据长度
  • scale小数的长度
  • columnDefinition 指定这一列的信息
  • String

    string是最常见的字段,

    @Column(name = “name”) private String name;

    SQL中 name varchar(255)

    生成的字段长度为255,即如果不设置长度的话默认的长度就是255个。

    @Column(name = “name”,length = 50) private String name; name varchar(50) create table user (id bigint not null, age integer, birth datetime(6), name default ‘12345', sex bit, primary key (id)) engine=InnoDB

    如果我们制定长度呢

    @Column(name = “name”,columnDefinition=“default ‘12345'”,length = 25) private String name;

    运行的DDL语句依然无法创建出表

    create table user (id bigint not null, age integer, birth datetime(6), name default ‘12345', sex bit, primary key (id)) engine=InnoDB

    如何给String字段指定默认值呢

    所以如果指定columnDefinition这个属性会覆盖原来的列注解的长度,而且在其注解的中必须制定列的类型

    * (Optional) The SQL fragment that is used when * generating the DDL for the column. * <p> Defaults to the generated SQL to create a * column of the inferred type. String columnDefinition() default ""; *(可选)在以下情况下使用的SQL片段: *正在为列生成DDL。 *默认使用生成的SQL来创建推断类型的列。 @Column(name = “name”,columnDefinition=" varchar(11) default ‘12345'",length = 25) private String name; create table user (id bigint not null, age integer, birth datetime(6), name varchar(11) default ‘12345', sex bit, primary key (id)) engine=InnoDB

    columnDefinition 会将其中的值作为列名之后,如果在这里设置默认值,必须保证直接加在列名之后执行不会出错。

    定义 Integer 和 Long 有区别吗

    Long的默认长度为20,Integer的默认长度为11

    定义Integer和int有区别吗

    区别是int如果你不给他设置就会默认为0

    boolean和Boolean也是一样的。

    boolean类型

    默认长度为1

    @Column(name = “sex”) private Boolean sex; create table user (id bigint not null, age integer, birth datetime(6), name varchar(255), sex bit, primary key (id)) engine=InnoDB

    指定boolean类型的默认值呢

    @Column(name = “sex”,columnDefinition = “bit(1) default 1”) private boolean sex;

    有注意,如果指定默认值为1,即是true,属性如果不指定,boolean的默认值就是false,所以会将false设置到对应的数据中,如果指定Boolean呢

    如果指定Boolean的话,没有设置默认就是null,就会将空更新到数据库中,最好用的方法还是在java类中设置默认值。

    默认的日期格式不具有可读性

    @Column(name = "birth") private Date birth;

    使用@Temporal来制定格式

    @Temporal(TemporalType.DATE) @Column(name = "birth") private Date birth;

    @Temporal有三个值

  • DATE 只有日期
  • TIME 只有时间 时分秒
  • TIMESTAMP 日期和时间都有
  • 浮点数格式的设置

    @Column(name = “age”,scale = 2) private int age;

    age integer,属性为scale = 2没有作用

    @Column(name = “age”,scale = 2) private float age;

    @Lob 指定该文本为长文本

    @Basic(fetch = FetchType.LAZY) 长文本缓加载,便于数据的读取。

    以上就是JPA设置默认字段及其长度详解的详细内容,更多关于JPA设置默认字段及长度的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
  • 关于Spring Data Jpa 自定义方法实现问题
    关于Spring Data Jpa 自定义方法实现问题
    2021-12-12
  • Java IO流—异常及捕获异常处理 try…catch…finally
    Java IO流—异常及捕获异常处理 try…catch…finally
    2021-12-12
  • 继承jpa Repository 写自定义方法查询实例
    继承jpa Repository 写自定义方法查询实例
    2021-12-12
  • 关于BufferedReader读取文件指定字符集问题
    关于BufferedReader读取文件指定字符集问题
    2021-12-12
  • JPA设置默认字段及其长度详解
    JPA设置默认字段及其长度详解
    2021-12-12
  • Java Float 保留小数位精度的实现
    Java Float 保留小数位精度的实现
    2021-12-12
  • 关于Java float和double精度范围大小
    关于Java float和double精度范围大小
    2021-12-12
  • 最新log4j2远程代码执行漏洞(附解决方法)
    最新log4j2远程代码执行漏洞(附解决方法)
    2021-12-12
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2023 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号