关系映射annotation

关系映射annotation

ID:40808967

大小:55.00 KB

页数:18页

时间:2019-08-08

关系映射annotation_第1页
关系映射annotation_第2页
关系映射annotation_第3页
关系映射annotation_第4页
关系映射annotation_第5页
资源描述:

《关系映射annotation》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一对一(One-To-One)使用@OneToOne注解建立实体Bean之间的一对一关联。一对一关联有三种情况:(1).关联的实体都共享同样的主键,(2).其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束),(3).通过关联表来保存两个实体之间的连接关系(要模拟一对一关联必须在每一个外键上添加唯一约束)。 1.共享主键的一对一关联映射:@Entity@Table(name="Test_Body")publicclassBody{  privateIntegeri

2、d;  privateHeartheart;  @Id  publicIntegergetId(){     returnid;  }  publicvoidsetId(Integerid){     this.id=id;  }  @OneToOne  @PrimaryKeyJoinColumn  publicHeartgetHeart(){     returnheart;  }  publicvoidsetHeart(Heartheart){     this.heart=heart;  }}@E

3、ntity@Table(name="Test_Heart")publicclassHeart{  privateIntegerid;  @Id  publicIntegergetId(){     returnid;  }  publicvoidsetId(Integerid){     this.id=id;  }}通过@PrimaryKeyJoinColumn批注定义了一对一关联 2.使用外键进行实体一对一关联:@Entity@Table(name="Test_Trousers")publiccla

4、ssTrousers{  @Id  publicIntegerid;  @OneToOne  @JoinColumn(name="zip_id")  publicTrousersZipzip;}@Entity@Table(name="Test_TrousersZip")publicclassTrousersZip{  @Id  publicIntegerid;  @OneToOne(mappedBy="zip")  publicTrouserstrousers;}上面的例子是指Trousers通过Tro

5、users的外键列zip_id和TrousersZip关联,@JoinColumn批注定义了联接列,该批注和@Column批注有点类似,但是多了一个名为referencedColumnName的参数。该参数定义了所关联目标实体中的联接列,注意,当referencedColumnName关联到非主键列的时候,关联的目标类必须实现Serializable,还要注意的是所映像的属性对应单个列(否则映射无效)一对一关联可能是双向的,在双向关联中,有且仅有一端作为主体(owner)端存在:主体端负责维护联接列(即

6、更新),对于不需要维护这种关系的从表则通过mappedNy属性进行声明。mappedBy的值指向主体的关联属性。例子中,mappedBy的值为zip。最后,不必也不能再在被关联端(ownedside)定义联接列了,因为已经在主体端声明了。如果在主体没有声明@JoinColumn,系统自动进行处理:在主表(ownertable)中将创建联接列,列名为:主体的关联属性名+下划线+被关联端的主键列名。上面的例子中是zip_id,因为Trousers中的关联属性名为zip,TrousersZip的主键是id。 

7、3.通过关联表定义一对一关联@Entity@Table(name="Test_People")publicclassPeople{  @Id  publicIntegerid;  @OneToOne  @JoinTable(name="TestPeoplePassports",     joinColumns=@JoinColumn(name="people_fk"),     inverseJoinColumns=@JoinColumn(name="passport_fk")  )  publicPa

8、ssportpassport;}@Entity@Table(name="Test_Passport")publicclassPassport{  @Id  publicIntegerid;  @OneToOne(mappedBy="passport")  publicPeoplepeople;}People通过名为TestPeoplePassports的关联表和Passport关联。该关联表拥有名为passport_fk的外键列,该外键指向

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。