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/

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM