如何使用JPA注解映射枚舉類型


從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;

相應的實體類如下:

@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();
}
}
}

說明:

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

參考文檔:

http://blog.csdn.net/EJB_JPA/article/details/2422684


免責聲明!

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



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