知识大全 精通Hibernate之映射继承关系七(图)
Posted 知
篇首语:著论准过秦,作赋拟子虚。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 精通Hibernate之映射继承关系七(图)相关的知识,希望对你有一定的参考价值。
精通Hibernate之映射继承关系七(图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Company与Employee类之间为一对多多态关联关系 如果继承关系树的根类对应一个表 或者每个类对应一个表 那么就能映射Company类的employees集合 本节介绍如何映射多对一多态关联 如图 所示 ClassD与ClassA为多对一多态关联关系 > > ClassA ClassB和ClassC构成了一棵继承关系树 如果继承关系树的根类对应一个表 或者每个类对应一个表 那么可以按以下方式映射ClassD的a属性 <many to one name= a class= ClassA column= A_ID cascade= save update /> 假定与ClassD对应的表为TABLE_D 与ClassA对应的表为TABLE_A 在TABLE_D中定义了外键A_ID 它参照TABLE_A表的主键 ClassD对象的a属性既可以引用ClassB对象 也可以引用ClassC对象 例如 tx = session beginTransaction(); ClassD d=(ClassD)session get( ClassD id); ClassA a=d getA(); if(a instanceof ClassB) System out println(((ClassB)a) getB ()); if(a instanceof ClassC) System out println(((ClassC)a) getC ()); mit(); 以下代码在映射ClassD类的a属性时使用了延迟检索策略 <many to one name= a class= ClassA column= A_ID lazy= true cascade= save update /> 当Hibernate加载ClassD对象时 它的属性a引用ClassA的代理类实例 在这种情况下 如果对ClassA的代理类实例进行类型转换 会抛出ClassCastException ClassA a=d getA(); ClassB b=(ClassB)a; //抛出ClassCastException 解决以上问题的一种办法是使用Session load()方法 ClassA a=d getA(); ClassB b=(ClassB)session load(ClassB class a getId()); System out println(b getB ()); 当执行Session的load()方法时 Hibernate并不会访问数据库 而是仅仅返回ClassB的代理类实例 这种解决办法的前提条件是必须事先知道ClassD对象实际上和ClassA的哪个子类的对象关联 解决以上问题的另一种办法是显式使用迫切左外连接检索策略 避免Hibernate创建ClassA的代理类实例 而是直接创建ClassA的子类的实例 tx = session beginTransaction(); ClassD d=(ClassD)session createCriteria(ClassD class) add(Expression eq( id id)) setFetchMode( a FetchMode EAGER) uniqueResult(); ClassA a=d getA(); if(a instanceof ClassB) System out println(((ClassB)a) getB ()); if(a instanceof ClassC) System out println(((ClassC)a) getC ()); mit(); 如果继承关系树的具体类对应一个表 为了表达ClassD与ClassA的多态关联 需要在TABLE_D中定义两个字段 A_ID和A_TYPE A_TYPE字段表示子类的类型 A_ID参照在子类对应的表中的主键 图 显示了表TABLE_D TABLE_B和TABLE_C的结构 > > cha138/Article/program/Java/ky/201311/28679相关参考
精通Hibernate之映射继承关系四(图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这种
精通Hibernate之映射继承关系八 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 由于关系数
精通Hibernate之映射继承关系(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 把每个
精通Hibernate之映射继承关系(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在域模
精通Hibernate之映射继承关系三 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! <h
一对象关系映射基础 对象间的基本关系 首先我简要阐明一下对象之间的基本关系在这以后UML的课程中也会深入的学习对象具有的四种基本关系 关联关系关联关系在设计模式中是被提倡优先使用于继承关系的
Hibernate各种映射关系总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多对一 第一
HibernateORM对象-关系映射 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Hiber
精通Hibernate:映射对象标识符 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java语
Hibernate的继承关系 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一每个子类对应一个数据表