JPA 1.0 僅支援實體集合映射,JPA 2.0 擴展至基本型別(String、Integer)與嵌入式物件集合。引入兩個新註解:
@ElementCollection:指定集合元素為基本型別或嵌入式類別@CollectionTable:指定集合表詳細資訊(表名、欄位等)public enum FeatureType { AC, CRUISE, PWR, BLUETOOTH, TV, ... }
@Embeddable
public class ServiceVisit {
@Temporal(DATE) @Column(name="SVC_DATE") Date serviceDate;
String workDesc; int cost;
}
@Entity
public class Vehicle {
@Id int vin;
@ElementCollection @CollectionTable(name="VEH_OPTNS") @Column(name="FEAT")
Set<FeatureType> optionalFeatures;
@ElementCollection @CollectionTable(name="VEH_SVC") @OrderBy("serviceDate")
List<ServiceVisit> serviceHistory;
}
第一組註解將枚舉值存入 VEH_OPTNS,第二組將嵌入式物件存入 VEH_SVC。@ElementCollection 另提供 targetClass、fetch(LAZY/EAGER)屬性。
支援嵌套嵌入、關聯嵌入、有序列表、@Access 彈性存取類型、單向一對多外鍵映射、@MapsId 派生身分、孤兒刪除等,全面強化 O/R 映射能力。