EJB学习日记(15)
来源:互联网 发布:姿态矩阵 姿态角 编辑:程序博客网 时间:2024/06/08 04:59
2007年10月10日 06:59:00
EJB中的集合映射
应用如下:
我们在前面的一对多以及多对多的情况可以看到,我们会需要对集合进行映射,对于基于List的映射我们在前面已经看过了。但是如果我们想对Map进映射呢,那该怎么办?
其实JPA已经帮我们设计好了。那就是利用@MapKey来进行注释。
我们还是先要看看MapKey的代码吧:
package javax.persistence;
@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface MapKey
{
String name( ) default "";
}
@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface MapKey
{
String name( ) default "";
}
应用如下:
@Entity
public class Customer implements java.io.Serializable {
private Map>String, Phone< phoneNumbers = new HashMap>String, Phone<( );
@OneToMany(cascade={CascadeType.ALL})
@JoinColumn(name="CUSTOMER_ID")
@MapKey(name="number")
public Map>String, Phone< getPhoneNumbers( ) {
return phoneNumbers;
}
public void setPhoneNumbers(Map>String, Phone< phones)
{
this.phoneNumbers = phones;
}
}
public class Customer implements java.io.Serializable {
private Map>String, Phone< phoneNumbers = new HashMap>String, Phone<( );
@OneToMany(cascade={CascadeType.ALL})
@JoinColumn(name="CUSTOMER_ID")
@MapKey(name="number")
public Map>String, Phone< getPhoneNumbers( ) {
return phoneNumbers;
}
public void setPhoneNumbers(Map>String, Phone< phones)
{
this.phoneNumbers = phones;
}
}
在此我们可以看出,@MapKey它只有一个方法,那就是指定名字,并且指定的名字必须是它所在的实体的成员,否则的话就识别不了 了,如果我们留空的话,那默认的key就是这个实体类的主键。用它的好处就是,我们有时候对于这个实体来说,仅仅需要知道的是它的某一部份,并且我们希望 利用这一部分来进行对实体的操作以及辨别。这样用Map就比用List方便一些了。
在此我们只是在以前一对多的基础上改了一点点而已,以前一对多的时候,没有@MapKey的注释,那么它返回的就是一个List,现在我 们加了@MapKey的注释,这样EntityManager来进行操作的时候,就会自动把我们的实体列表根据我们所指定的Key生成一个Map了。在某 些情况下用Map确实比用List要方便许多。
来自:千里冰封
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1817686
- EJB学习日记(15)
- EJB学习日记(20)
- EJB学习日记(19)
- EJB学习日记(18)
- EJB学习日记(17)
- EJB学习日记(16)
- EJB学习日记(14)
- EJB学习日记(13)
- EJB学习日记(12)
- EJB学习日记(11)
- EJB学习日记(10)
- EJB学习日记(9)
- EJB学习日记(8)
- EJB学习日记(7)
- EJB初学日记(6)
- EJB初学日记(5)
- EJB初学日记(4)
- EJB初学日记(3)
- 白话数字签名(1)——基本原理(新!)
- EJB学习日记(19)
- EJB学习日记(18)
- EJB学习日记(17)
- EJB学习日记(16)
- EJB学习日记(15)
- EJB学习日记(14)
- EJB学习日记(13)
- EJB学习日记(12)
- EJB学习日记(11)
- EJB学习日记(10)
- EJB学习日记(9)
- EJB学习日记(8)
- EJB学习日记(7)