快速业务通道

使用Apache OpenJPA开发EJB 3.0应用,第4部分: 实体关联 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
类的关联字段不是自己的主键的情况。以演示 场景中 Book 和 BookExtend 实体的关系为例:BookExtend 表中默认使用 Id 字 段和 Book 类的某个字段进行关联,但如果实际情况下 BookExtends 表需要使用 “myID“字段和 Book 表进行关联,我们就可以设置 javax.persistence.JoinColumn 注释的属性值为“myID”。

javax.persistence.JoinColumn 用法举例

public class Book {   // 其它内容…   /*   * 使用 OneToOne 注释表示该属性和 Book 类形成一对一关系, OneToOne   * 注释的 option 属性设为 True 表示该对象可以不存在,cascade  属性   * 设置为 CascadeType.ALL,表示 Book 和 BookExtend 对象级联新 建、 更新、删除、刷新   */   @OneToOne(optional = true, cascade = CascadeType.ALL)   /*   * 使用 JoinColumn 注释设置两个对象对应数据库表之间的关联字段   * name 属性指定关联关系中主类对应表中参与关联关系的字段名称,   * referencedColumnNam 属性指定关联关系中从类对应表中参与关   * 联关系的字段名称,   */   @JoinColumn(name = "beID", referencedColumnName = "myID")   public BookExtend bookExtend; }

使用Apache OpenJPA开发EJB 3.0应用,第4部分: 实体关联(4)

时间:2011-08-31 IBM 肖菁

根据模拟场景的需求,结合我们前面学习到的描述实体之间一对一关联关系的 知识,我们可以采用如下设计:

Book 类和 BookExtend 之间存在一对一关联关系;

Book、BookExtend 对应的表的主键字段由 MySQL 自动生成;

Book 表中参与关联关系的字段名为“beID“;

BookExtend 表中参与关联关系的字段使用默认字段“ID”;

Book 类和 BookExtend 类之间存在全部级联关系;

不是每一个 Book 对象都需要有对应的 BookExtend 对象。

根据这样的设计,我们可以开始编写实体 Book 和 BookExtend 对应的持久化 类代码,下面是作者编写的两个实体类的全部代码,大家可以参考代码中加入的 大量注释学习如何使用注释来描述实体和实体之间的一对一关联关系。

Book 类

1. package org.vivianj.openjpa.beans; 2. 3. import javax.persistence.Basic; 4. import javax.persistence.CascadeType; 5. import javax.persistence.Column; 6. import javax.persistence.Entity; 7. import javax.persistence.GeneratedValue; 8. import javax.persistence.GenerationType; 9. import javax.persistence.Id; 10. import javax.persistence.Inheritance; 11. import javax.persistence.InheritanceType; 12. import javax.persistence.JoinColumn; 13. import javax.persistence.OneToOne; 14. 15. /** 16. * Book 用于表征系统中的书籍对象,它有三个属性 id - 书籍编号 ,     * 书籍编号将由 MySQL 数据库自动生成 name - 书名  bookExtend – 17. * 书的扩展信息,和 BookExtend 是一对一(OneToOne)关系  18. */ 19. 20. @Entity(name = "Book") 21. public class Book { 22. /* Id 注释表示该字段是标识字段 */ 23. @Id 24. /* 25.  * GeneratedValue 注释定义了该标识字段的产生方式,我们的演示 系统中 26.  * id 由 MySQL 数据库字段自动生成,因此选择  GenerationType.IDENTITY 27.  */ 28. @GeneratedValue(strategy = GenerationType.IDENTITY) 29. /* 30.  * Column 注释的 name 属性定义了该类属性对应的数据字段的名 称,      * 为了最大限度保持系统和

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号