注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Programmer's World

记录成长的点点滴滴

 
 
 

日志

 
 

jpa一对多、多对一、单双向注解详解  

2014-09-21 01:24:12|  分类: jpa|hibernate |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

用到的注解解释:

@OneToOne   @OneToMany  @ManyToOne  @ManyToMany

属性:

1.targetEntity :Class 类型的属性,定义关系类的类型,默认是该成
员属性对应的类类型,所以通常不需要提供定义
2.mappedBy

主类定义,将类首字母变小写即可
String 类型的属性,定义类之间的双向关系。如果类之间是单向关系,不需要提
供定义,如果类和类之间形成双向关系,我们就需要使用这个属性进行定义,否
则可能引起 数据一致性的问题
3.cascade
CascadeType[]类型,该属性定义类和类之间的级联关系。定义的级联关系将被容
器视为对当前类对象及其关联类对象采取相同的操作,而且这种关系 是递归调
用的。举个例子:Order 和OrderItem 有级联关系,那么删除Order 时将同时
删除它所对应的OrderItem 对象。而如果OrderItem 还和其他的对象之间有级
联关系,那么这样的操作会一直递归执行下去,cascade 的值只能从
CascadeType.PERSIST(级联新建)、CascadeType.REMOVE(级联删除)、
CascadeType.REFRESH(级联刷新)、CascadeType.MERGE(级联更新)中选择一
个或多个。还有一个选择是使用 CascadeType.ALL,表示选择全部四项。
4.fatch
FetchType 类型的属性。
可选择项包括:FetchType.EAGER 和FetchType.LAZY。前者表示关系类(本例是
OrderItem 类)在主类(本例是Order 类)加载的时候同时加载,后者表示关系类
在被访问时才加载。默认值是FetchType. LAZY。
@OrderBy(value = "id ASC")注释指明加载OrderItem 时按id 的升序排序
addOrderItem 和removeOrderItem 方法用来添加/删除订单项。

@JoinColumn

属性:

1.name

@ManyToOne  @OneToOne 用到 写主类对应的数据库里的外键字段名

2.referencedColumnName

一般写入 从类的主键名 ,非主键关联可以用到  但必须从类实现序列化接口 Serializable

示例 2张表:

order :id   name

orderinfo:id  name  order_id

一对多 单向

 Order类

@OneToMany(mappedBy="order")

List<OrderInfo> orderInfos;

多对一 单向

OrderInfo类

@ManyToOne

@JoinColumn(name="order_id")

Order order;

jpa 一对多案例:http://www.cnblogs.com/linjiqin/archive/2011/03/09/1978088.html

jpa 一对一案例:http://www.cnblogs.com/linjiqin/archive/2011/03/09/1978496.html

 


  评论这张
 
阅读(79)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017