📅  最后修改于: 2023-12-03 15:35:03.346000             🧑  作者: Mango
在 Spring Data JPA 中,使用 @Column 注解可以对实体类中的属性进行数据库列的映射。除了基本的属性,@Column 注解还支持一些属性配置,本文将对其进行介绍。
指定数据库中的列名,如果不指定则默认使用属性名作为列名。
示例:
@Column(name = "last_updated")
private Date lastUpdated;
指定列是否允许为空,值为 true 表示允许,false 表示不允许,默认为 true。
示例:
@Column(nullable = false)
private String name;
指定该列是否唯一,值为 true 表示唯一,false 表示不唯一,默认为 false。
示例:
@Column(unique = true)
private String email;
指定该列的长度,对于字符串类型的列有效,默认为 255。
示例:
@Column(length = 20)
private String name;
指定该列的数据类型,可以使用 SQL 语句进行自定义配置。
示例:
@Column(columnDefinition = "varchar(255) default 'unknown'")
private String name;
指定该列是否允许插入和更新,默认为 true。
示例:
@Column(insertable = false, updatable = false)
private Date createTime;
@Column(insertable = true, updatable = false)
private Date updateTime;
用于精度和小数点的指定,只有对于数字类型的列有效。
示例:
@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 注解的属性,可以灵活地控制实体属性和数据库列之间的映射关系。