快速业务通道

Kodo EJB:实现类和类之间的关联关系 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

OneToOne用法举例

public class Book{ // 其他内容… @OneToOne(optional=true,cascade=CascadeType.ALL) public BookExtend bookExtend; }  JoinColumn

JoinColumn注释用于定义主类在数据库中对应的表通过什么字段和关系类的主键进行关联,这个注释是可选的,如果不提供该注释,Kodo在使用”对象名_ID”和关联表进行关联(简单情况下),比如演示场景中类Book的bookExtend没有使用JoinColumn注释进行声明,我们使用Kodo EJB提供的Mapping Tool工具生成表格的时候,Book类对应的表Book中将自动加入列bookExtend_ID,它的类型将和BookExtend对应表的主键字段id类型保持一致。

Kodo EJB:实现类和类之间的关联关系(3)

时间:2011-03-05 bea 肖菁

JoinColumn注释中有两个属性:name和referencedColumnName属性。

name

String类型。

它用于指定主类对应的表中和关系类的主键进行关联的字段的名称,比如上例中,我们不希望使用默认的bookExtend_ID字段名进行关联,我们可以在Book类中使用JoinColumn注释bookExtend属性,设置JoinColumn注释为自己想要的名字比如extendID或者其他。

referencedColumnName

String类型。

指定关联表中与主表形成关联关系的字段名。主要用于设置区别于主键字段的情况。比如BookExtend表中默认使用Id进行关联,但现在需要使用其他字段进行关联,我们就可以提供该属性。

JoinColumn用法举例

public class Book{ // 其他内容… @OneToOne(optional=true,cascade=CascadeType.ALL) @JoinColumn(name="extendID",referencedColumnName="ID") public BookExtend bookExtend; } 编写符合要求的持久化类

现在我们开始根据上面章节中介绍的内容编写符合模拟场景中要求的Book类和BookExtend类,下面是作者编写的两个类的全部代码,代码中加入了比较多的注释方便大家理解。    Book类 package org.vivianj.kodo.examples.beans; import Javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; /** * Book 用于表征系统中的书籍对象,他有三个属性 * id - 书籍编号,书籍编号将由MySQL数据库自动生成 * name - 书名 * bookExtend – 书的扩展信息,和BookExtend是一对一(OneToOne)关系 */ /* Entity注释表示该类是持久化类,的name属性是该实体在查询中对应的唯一名称,默认是类名 */ @Entity(name = "Book") /* Table注释的name属性指定该持久化类对应的数据表的名称,默认数据表名和类名保持一致,为了 * 增强代码的可移植性,建议大家在name属性中使用大写英文字母 */ /* Inheritance注释的strategy确定了持久化对象和数据表之间的关系,可选择项包括SINGLE_TABLE、JOINED和TABLE_PER_CLASS,我们这里采用JOINED  */ /* TABLE_PER_CLASS : strategy 设置为该选项表示每个类使用一个表,也就是上面所说的第一种情况*/ /* SINGLE_TABLE : strategy 设置为该选项表示所有类及其子类共用一个表,也就是上面所说的第二种情况*/ /* JOINED : strategy 设置为该选项表示每个类使用子表保存子类比父类多出的属性,也就是上面所说的第三种情况*/ @Inheritance(strategy = InheritanceType.JOINED) public class Book { /* Id注释表示该字段是标识字段 */ @Id /* GeneratedValue

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号