关系映射annotation.docVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关系映射annotation

一对一(One-To-One) 使用@OneToOne注解建立实体Bean之间的一对一关联。一对一关联有三种情况:(1).关联的实体都共享同样的主键,(2).其中一个实体 通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束),(3).通过关联表来保存两个实体之间的连接关系(要模拟一对一关 联必须在每一个外键上添加唯一约束)。 ? 1.共享主键的一对一关联映射: @Entity @Table(name=Test_Body) public class Body { ?? private Integer id; ?? private Heart heart; ?? @Id ?? public Integer getId() { ????? return id; ?? } ?? public void setId(Integer id) { ????? this.id = id; ?? } ?? @OneToOne ?? @PrimaryKeyJoinColumn ?? public Heart getHeart() { ????? return heart; ?? } ?? public void setHeart(Heart heart) { ????? this.heart = heart; ?? } } @Entity @Table(name=Test_Heart) public class Heart { ?? private Integer id; ?? @Id ?? public Integer getId() { ????? return id; ?? } ?? public void setId(Integer id) { ????? this.id = id; ?? } } 通过@PrimaryKeyJoinColumn批注定义了一对一关联 ? 2.使用外键进行实体一对一关联: @Entity @Table(name=Test_Trousers) public class Trousers { ?? @Id ?? public Integer id; ?? @OneToOne ?? @JoinColumn(name = zip_id) ?? public TrousersZip zip; } @Entity @Table(name=Test_TrousersZip) public class TrousersZip { ?? @Id ?? public Integer id; ?? @OneToOne(mappedBy = zip) ?? public Trousers trousers; } 上面的例子是指Trousers通过Trousers的外键列zip_id和TrousersZip关联,@JoinColumn批注定义了联接 列,该批注和@Column批注有点类似,但是多了一个名为referencedColumnName的参数。该参数定义了所关联目标实体中的联接列,注 意,当referencedColumnName关联到非主键列的时候,关联的目标类必须实现Serializable,还要注意的是所映像的属性对应单 个列(否则映射无效) 一对一关联可能是双向的,在双向关联中,有且仅有一端作为主体(owner)端存在:主体端负责维护联接列(即更新),对于不需要维护这种关系的从 表则通过mappedNy属性进行声明。mappedBy的值指向主体的关联属性。例子中,mappedBy的值为zip。最后,不必也不能再在被关联端 (ownedside)定义联接列了,因为已经在主体端声明了。 如果在主体没有声明@JoinColumn,系统自动进行处理:在主表(owner table)中将创建联接列,列名为:主体的关联属性名+下划线+被关联端的主键列名。上面的例子中是zip_id,因为Trousers中的关联属性名 为zip,TrousersZip的主键是id。 ? 3.通过关联表定义一对一关联 @Entity @Table(name=Test_People) public class People { ?? @Id ?? public Integer id; ?? @OneToOne ?? @JoinTable(name =TestPeoplePassports, ????? joinColumns=@JoinColumn(name=people_fk), ????? inverseJoinColumns=@JoinColumn(name=passport_fk) ?? ) ?? public Passport passport; } @Entity @Table(name=Test_Passport

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档