精通Hibernate之映射继承关系(一) 精通Hibernate之映射继承关系(二) 精通Hibernate之映射继承关系(三) 精通Hibernate之映射继承关系(四) 精通Hibernate之映射继承关系(五) Company与Employee类之间为一对多多态关联关系,如果继承关系树的根类对应一个表,或者每个类对应一个表,那么就能映射Company类的employees集合。本节介绍如何映射多对一多态关联。如图14-11所示,ClassD与ClassA为多对一多态关联关系。 图14-11 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).getB1()); if(a instanceof ClassC) System.out.println(((ClassC)a).getC1()); tx.commit(); 1 2 3 4 下一页>>
精通Hibernate之映射继承关系(一) 精通Hibernate之映射继承关系(二) 精通Hibernate之映射继承关系(三) 精通Hibernate之映射继承关系(四) 精通Hibernate之映射继承关系(五) Company与Employee类之间为一对多多态关联关系,如果继承关系树的根类对应一个表,或者每个类对应一个表,那么就能映射Company类的employees集合。本节介绍如何映射多对一多态关联。如图14-11所示,ClassD与ClassA为多对一多态关联关系。 图14-11 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).getB1()); if(a instanceof ClassC) System.out.println(((ClassC)a).getC1()); tx.commit();
<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).getB1()); if(a instanceof ClassC) System.out.println(((ClassC)a).getC1()); tx.commit();
1 2 3 4 下一页>>