從JDK5.0開始,Sun引進了一個全新的關鍵字 enum 來定義一個枚舉類型,於是 JPA 中也有相應的注解來對枚舉類型進行映射。
假設顧客表如下:
CREATE TABLE `customer` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`state` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ak_key_2` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`state` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ak_key_2` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
相應的實體類如下:
@Entity
@Table(name = "CUSTOMER", uniqueConstraints = @UniqueConstraint(columnNames = "name"))
public class Customer extends AuditableEntity {
private String name;//顧客名稱
private StateEnum state;//狀態
@Column(name = "name", unique = true, length = 100)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "state", length = 10)
@Enumerated(EnumType.STRING)
public StateEnum getState() {
return state;
}
public void setState(StateEnum state) {
this.state = state;
}
public static enum StateEnum {
NORMAL, DELETE;
public String getLabel() {
switch (this) {
case NORMAL:
return "正常";
case DELETE:
return "刪除";
}
return super.toString();
}
}
}
@Table(name = "CUSTOMER", uniqueConstraints = @UniqueConstraint(columnNames = "name"))
public class Customer extends AuditableEntity {
private String name;//顧客名稱
private StateEnum state;//狀態
@Column(name = "name", unique = true, length = 100)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "state", length = 10)
@Enumerated(EnumType.STRING)
public StateEnum getState() {
return state;
}
public void setState(StateEnum state) {
this.state = state;
}
public static enum StateEnum {
NORMAL, DELETE;
public String getLabel() {
switch (this) {
case NORMAL:
return "正常";
case DELETE:
return "刪除";
}
return super.toString();
}
}
}
說明:
EnumType有兩個值,ORDINAL表示持久化的為枚舉類型的值,STRING表示持久化的為枚舉類型的名稱。
@Enumerated注解的API文檔說明:
http://docs.oracle.com/javaee/5/api/javax/persistence/Enumerated.html
EnumType注解的API文檔說明:
http://docs.oracle.com/javaee/5/api/javax/persistence/EnumType.html
參考文檔: