SpringBoot | Jpa @Column

@Column

@Column的作用是来标识实体类中属性与数据表中字段的对应关系,其代码定义如下:

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
    String name() default "";  // 定义了该属性字段在数据库表中所对应字段的名称

    boolean unique() default false;  //表示该字段是否为唯一标识,默认为false

    boolean nullable() default true;  //表示该字段是否可以为null值,默认为true

    boolean insertable() default true; //表示在使用“INSERT”脚本插入数据时,是否允许插入该字段的值

    boolean updatable() default true;  //表示在使用“UPDATE”脚本插入数据时,是否允许更新该字段的值. 

    String columnDefinition() default ""; //表示创建表时,该字段创建的SQL语句,一般用于通过Entity生成表定义时使用。

    String table() default "";  //定义了包含当前字段的表名,缺省值时默认该字段存在于主表下

    int length() default 255; // 表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符

    int precision() default 0; //表示数值的总长度

    int scale() default 0;  //表示小数点所占的位数
}

  

insertable 和 updateble应用

  一般多用于只读的属性或者自动生成的字段,例如主键

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id",insertable = false,updatable = false)
private Long id;

 

注:下面的应用基于通过Entity定义生成表的策略,主要观察其注解设置对SQL的影响

 

nullable,unique, name, length 应用

@Column(nullable = false, unique = true,name = "user_name",length = 100)
private String userName;

 

precision 和 scale 应用

@Column(name="income", precision=12, scale=3)
 private BigDecimal income;

 

 Javaee8文档:https://javaee.github.io/javaee-spec/javadocs/

 

 

 

posted @ 2020-08-27 23:06  听说这是最长的名字了  阅读(1301)  评论(0编辑  收藏  举报