如果使用了Map集合,可以同时配合注释@MapKey指定Map中存放的key值。例如以下代码中将AddressEO中的属性id作为key值保存在Map中。
@Entity
@Table(name = "customer")
public class CustomerEO implements java.io.Serializable {
……
private Map<Integer,AddressEO> addresses = new HashMap<Integer,AddressEO>();
@OneToMany(mappedBy="customer")
@MapKey(name="id")
public Map<Integer, AddressEO> getAddresses() {
return addresses;
}
public void setAddresses(Map<Integer, AddressEO> addresses) {
this.addresses = addresses;
}
}
其中,注释@ MapKey定义如下所示。
@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface MapKey {
String name() default "";
}
在使用@ MapKey注释事应注意以下几个问题。
l @ MapKey用于标注Map中的key值。name的值指定Map类存放哪个实体的属性作为key值。
l 若不指定key值,默认为实体的主键作为key值。