6.3.4 一对多@OneToMany

6.3.4 一对多@OneToMany
2008-05-11 14:59 3359人阅读 评论(0) 收藏 举报

@OneToMany标记用于标注实体关系为一对多。在实体CustomerEO与实体AddressEO的关系是一对多的关系。注释@OneToMany的定义的代码如下所示

@Target({METHOD, FIELD}) @Retention(RUNTIME)

public @interface OneToMany {

Class targetEntity() default void.class;

CascadeType[] cascade() default {};

FetchType fetch() default LAZY;

String mappedBy() default "";

}

在使用此@OneToMany标记时,需要注意以下几个问题。

l         targetEntity属性表示默认关联的实体类型。因为一对多的实体集合时保存在集合类中,所以必须指明集合类中保存的具体类型。以下两种方案必须任选一种。

1)指定集合泛型的具体类型,如以上例中的代码所示。

         private Collection<AddressEO> addresses = new ArrayList<AddressEO>();

 

         @OneToMany(cascade = { CascadeType.ALL })

         @JoinColumn(name = "customer_id")

         public Collection<AddressEO> getAddresses() {

                   return addresses;

         }

2)指定targetEntity属性类型,如下代码所示。

         private Collection addresses = new ArrayList();

 

         @OneToMany(targetEntity=AddressEO.class,cascade = { CascadeType.ALL })

         @JoinColumn(name = "customer_id")

         public Collection getAddresses() {

                   return addresses;

         }

l         cascade属性和fetch属性所表示的意义与@OneToOne标记中类似,请读者参阅@OneToOne的属性说明。但要注意的是,@OneToManyfetch属性默认为惰性加载LAZY的,这是因为集合类如果使用即时加载的话,会浪费很多资源。所以一般建议使用惰性加载。

l         mappedBy属性用于标记当实体间的关系是双向时使用,在本章的6.5.2小节中将会详细讲述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值