JPA 的 @OneToMany 注解

@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface OneToMany {
    Class targetEntity() default void.class;
    CascadeType[] cascade() default {};
    FetchType fetch() default EAGER;
    String mappedBy() default "";
}

targetEntity 属性指定关联实体的类型,一般可以不指定,直接从集合类型的范型中获取。例如:

@OneToMany
List<Address> addresses;

Address就是关联实体的类型。

cascade 是级联类型,可以选以下类型中的一个或几个:

  • CascadeType.PERSIST (级联保存) 保存实体也保存关联对象;
  • CascadeType.REMOVE (级联删除) 删除实体也删除关联对象;
  • CascadeType.REFRESH (级联刷新) 刷新实体时也刷新关联对象;
  • CascadeType.MERGE (级联更新)更新实体也更新关联对象。 或者使用CascadeType.ALL,表示选择全部四项。

fetch属性代表加载方式有 FetchType.LAZY 和 FetchType.EAGER两种。

mappedBy 属性指定关联实体的属性,例如Order 与 OrderItem是一对多的关联,OrderItem中有一个orderId属性执行Order 的id,那么mappedBy的值即为orderId。注意,此处的值是属性值而非数据库中列名。可以使用@JoinColumn注解来替代mappedBy属性,但是@JoinColumn的name属性指定的是数据库中的列名。综上,以下两种方式的映射是等价的:

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="orderId")
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="order_id")

转载于:https://my.oschina.net/u/2453016/blog/993791

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值