📜  Spring Data JPA – @Column 注解的属性及示例(1)

📅  最后修改于: 2023-12-03 15:35:03.346000             🧑  作者: Mango

Spring Data JPA – @Column 注解的属性及示例

在 Spring Data JPA 中,使用 @Column 注解可以对实体类中的属性进行数据库列的映射。除了基本的属性,@Column 注解还支持一些属性配置,本文将对其进行介绍。

属性
name

指定数据库中的列名,如果不指定则默认使用属性名作为列名。

示例:

@Column(name = "last_updated")
private Date lastUpdated;
nullable

指定列是否允许为空,值为 true 表示允许,false 表示不允许,默认为 true。

示例:

@Column(nullable = false)
private String name;
unique

指定该列是否唯一,值为 true 表示唯一,false 表示不唯一,默认为 false。

示例:

@Column(unique = true)
private String email;
length

指定该列的长度,对于字符串类型的列有效,默认为 255。

示例:

@Column(length = 20)
private String name;
columnDefinition

指定该列的数据类型,可以使用 SQL 语句进行自定义配置。

示例:

@Column(columnDefinition = "varchar(255) default 'unknown'")
private String name;
insertable 和 updatable

指定该列是否允许插入和更新,默认为 true。

示例:

@Column(insertable = false, updatable = false)
private Date createTime;

@Column(insertable = true, updatable = false)
private Date updateTime;
precision 和 scale

用于精度和小数点的指定,只有对于数字类型的列有效。

示例:

@Column(precision = 5, scale = 2)
private BigDecimal price;
示例

以下是一个使用 @Column 注解的实体类示例:

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name", length = 20, nullable = false)
    private String name;

    @Column(name = "email", unique = true, length = 50, nullable = false)
    private String email;

    @Column(name = "age", length = 3)
    private Integer age;

    @Column(name = "create_time", insertable = false, updatable = false, columnDefinition = "datetime default current_timestamp")
    private LocalDateTime createTime;

    @Column(name = "update_time", insertable = true, updatable = false, columnDefinition = "datetime default current_timestamp on update current_timestamp")
    private LocalDateTime updateTime;

    // getter 和 setter 略
}

在该实体类中,使用 @Column 注解对 name、email、age、createTime 和 updateTime 属性进行了数据库列的映射。通过配置 @Column 注解的属性,可以灵活地控制实体属性和数据库列之间的映射关系。