对方案一的hibernate实现,利用hibernate中的父子关系来解决:
java文件
public class Party {
Long partyId;
String partyRole;
}
public class Person {
Long id;
Party party;
String login;
String name;
String sex;
......
}
public class Department {
Long id;
Party party;
String name;
String address;
......
}
public abstract class PartyRelationship {
Long id;
Party partyFrom;
Party partyTo;
String partyRole;
}
public class PersonRelationship extends PartyRelationship{}
public class DepartmentRelationship extends PartyRelationship{}
public class PersonDepartment extends PartyRelationship{}
hbm.xml文件
<hibernate-mapping package="com.bulain.model">
<class name="Party" table="party">
<id name="partyId" column="party_id" type="java.lang.Long" >
<generator class="native"/>
</id>
<property name="partyRole" column="party_role" type="java.lang.String"/>
</class>
<class name="Person" table="person">
<id name="id" column="id" unsaved-value="0">
<generator class="foreign">
<param name="property">party</param>
</generator>
</id>
<one-to-one name="party" class="Party" cascade="all" constrained="true" />
<property name="login" column="login" type="java.lang.String"/>
<property name="name" column="name" type="java.lang.String"/>
<property name="sex" column="sex" type="java.lang.String"/>
</class>
<class name="Department" table="department">
<id name="id" column="id" unsaved-value="0">
<generator class="foreign">
<param name="property">party</param>
</generator>
</id>
<one-to-one name="party" class="Party" cascade="all" constrained="true"/>
<property name="name" column="name" type="java.lang.String"/>
<property name="address" column="address" type="java.lang.String"/>
</class>
<class name="PartyRelationship" table="party_relationship" abstract="true">
<id name="id" column="id" type="java.lang.Long">
<generator class="native"/>
</id>
<discriminator column="party_role" type="java.lang.String"/>
<many-to-one name="partyFrom" column="party_from_id" not-null="true"/>
<many-to-one name="partyTo" column="party_to_id" not-null="true"/>
<subclass name="PersonRelationship" discriminator-value="per_per">
<property name="partyRole" column="party_role" insert="false"
update="false"/>
</subclass>
<subclass name="PersonDepartment" discriminator-value="per_dept">
<property name="partyRole" column="party_role" insert="false"
update="false"/>
</subclass>
<subclass name="DepartmentRelationship" discriminator-value="dept_dept">
<property name="partyRole" column="party_role" insert="false"
update="false"/>
</subclass>
</class>
</hibernate-mapping>
对于这个实现所以关系仍在party_relationship这张表中进行维护,通过PersonRelationship、DepartmentRelationship、PersonDepartment这三个子类进行维护。
分享到:
相关推荐
21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...
21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...
21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...
21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...
21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...
21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...
21.5 利用Hibernate的版本控制来实现乐观锁 21.5.1 使用元素 21.5.2 使用元素 21.5.3 对游离对象进行版本检查 21.5.4 强制更新版本 21.6 实现乐观锁的其他方法 21.7 小结 21.8 思考题 第22章 管理...
1、在Tomcat中快速上手 2、体系结构 3、SessionFactory配置 4、持久化类 5、O/R Mapping基础 6、集合类映射 7、组件映射 ...16、示例:父子关系 17、示例:Weblog应用程序 18、示例:不同的映射 19、最佳实践
21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and ...
示例:父子关系(Parent Child Relationships) 16.1. 关于collections 16.2. 双向的一对多关系(Bidirectional one-to-many) 16.3. 级联生命周期(Cascading lifecycle) 16.4. 级联更新(Using ...
7.2.3 父子关系 164 7.3 映射一对多双向自身关联关系 165 7.4 改进持久化类 171 7.5 小结 175 7.6 思考题 176 第8章 通过Hibernate操纵对象(上) 179 本章站在持久化层的角度,Java对象在生命周期中可处于...
22. 示例:父子关系(Parent Child Relationships) 22.1. 关于collections需要注意的一点 22.2. 双向的一对多关系(Bidirectional one-to-many) 22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值...
第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射...
22. 示例:父子关系(Parent Child Relationships) 22.1. 关于collections需要注意的一点 22.2. 双向的一对多关系(Bidirectional one-to-many) 22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值...
21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and ...
f) All-delete-orphan 父子关系的表设为此值,表示,当删除一个父对象时,将这个set容器中的子对象全部删除 2. Inverse 只能在set映射时使用;它的作用是:是否根据set容器中存放的对象,产生update语句,维护关系...
21.5 利用Hibernate的版本控制来实现乐观锁 21.5.1 使用元素 21.5.2 使用元素 21.5.3 对游离对象进行版本检查 21.5.4 强制更新版本 21.6 实现乐观锁的其他方法 21.7 小结 21.8 思考题 第22章 管理...
21.5 利用Hibernate的版本控制来实现乐观锁 21.5.1 使用元素 21.5.2 使用元素 21.5.3 对游离对象进行版本检查 21.5.4 强制更新版本 21.6 实现乐观锁的其他方法 21.7 小结 21.8 思考题 第22章 管理...
21.5 利用Hibernate的版本控制来实现乐观锁 21.5.1 使用元素 21.5.2 使用元素 21.5.3 对游离对象进行版本检查 21.5.4 强制更新版本 21.6 实现乐观锁的其他方法 21.7 小结 21.8 思考题 第22章 管理...