@Column注解
用来标识实体类中属性与数据表中字段的对应关系。
例如在实体类中的:
// Property accessors
@GenericGenerator(name = "generator", strategy = "uuid.hex")
@Id
@GeneratedValue(generator = "generator")
@Column(name = "id", unique = true, nullable = false, length = 32)
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
@Column(name = "user_id", nullable = false, length = 32)
public String getUserId() {
return this.userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Column(name = "action_time", nullable = false, length = 19)
public Timestamp getActionTime() {
return this.actionTime;
}
public void setActionTime(Timestamp actionTime) {
this.actionTime = actionTime;
}
@Column(name = "action_content",length = 20)
public String getActionContent() {
return this.actionContent;
}
public void setActionContent(String actionContent) {
this.actionContent = actionContent;
}
@Column(name = "action_ip", length = 20)
public String getActionIp() {
return this.actionIp;
}
public void setActionIp(String actionIp) {
this.actionIp = actionIp;
}
@Column(name = "action_ip_info", length = 200)
public String getActionIpInfo() {
return this.actionIpInfo;
}
public void setActionIpInfo(String actionIpInfo) {
this.actionIpInfo = actionIpInfo;
}
@Column(name = "action_desc", length = 100)
public String getActionDesc() {
return this.actionDesc;
}
public void setActionDesc(String actionDesc) {
this.actionDesc = actionDesc;
}
@Column(name = "log_uid", length = 100)
public String getLogUid() {
return logUid;
}
public void setLogUid(String logUid) {
this.logUid = logUid;
}
@Column属性详解:
name
定义了被标注字段在数据库表中所对应字段的名称;
unique
表示该字段是否为唯一标识,默认为false。如果表中有一个字段需要唯一标识,则既可以使用该标记,也可以使用@Table标记中的@UniqueConstraint。
nullable
表示该字段是否可以为null值,默认为true。
insertable
表示在使用“INSERT”脚本插入数据时,是否需要插入该字段的值。
updatable
表示在使用“UPDATE”脚本插入数据时,是否需要更新该字段的值。insertable和updatable属性一般多用于只读的属性,例如主键和外键等。这些字段的值通常是自动生成的。
columnDefinition(大多数情况,几乎不用)
表示创建表时,该字段创建的SQL语句,一般用于通过Entity生成表定义时使用。(也就是说,如果DB中表已经建好,该属性没有必要使用。)
table
表示当映射多个表时,指定表的表中的字段。默认值为主表的表名。
length
表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符。
precision和scale
precision属性和scale属性表示精度,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数。
@Column用法
@Column可以标注在属性前或getter方法前;
Ⅰ.@Column标注在属性前(建议使用这一种方式)
@Column(name = "tradeNo" ,length = 50 , nullable = false)
private String tradeNo;
Ⅱ.@Column标注getter方法前
@Column(name = "action_desc", length = 100)
public String getActionDesc() {
return this.actionDesc;
}
public void setActionDesc(String actionDesc) {
this.actionDesc = actionDesc;
}