`

对方案一的hibernate实现,利用hibernate中的父子关系来解决

阅读更多
对方案一的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这三个子类进行维护。
分享到:
评论

相关推荐

    Hibernate+中文文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    hibernate3.2中文文档(chm格式)

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    Hibernate中文详细学习文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    Hibernate 中文 html 帮助文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    HibernateAPI中文版.chm

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     21.5 利用Hibernate的版本控制来实现乐观锁  21.5.1 使用元素  21.5.2 使用元素  21.5.3 对游离对象进行版本检查  21.5.4 强制更新版本  21.6 实现乐观锁的其他方法  21.7 小结  21.8 思考题 第22章 管理...

    hibernate中文参考文档

    1、在Tomcat中快速上手 2、体系结构 3、SessionFactory配置 4、持久化类 5、O/R Mapping基础 6、集合类映射 7、组件映射 ...16、示例:父子关系 17、示例:Weblog应用程序 18、示例:不同的映射 19、最佳实践

    最全Hibernate 参考文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and ...

    hibernate 教程

    示例:父子关系(Parent Child Relationships) 16.1. 关于collections 16.2. 双向的一对多关系(Bidirectional one-to-many) 16.3. 级联生命周期(Cascading lifecycle) 16.4. 级联更新(Using ...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    7.2.3 父子关系 164 7.3 映射一对多双向自身关联关系 165 7.4 改进持久化类 171 7.5 小结 175 7.6 思考题 176 第8章 通过Hibernate操纵对象(上) 179 本章站在持久化层的角度,Java对象在生命周期中可处于...

    Hibernate教程

    22. 示例:父子关系(Parent Child Relationships) 22.1. 关于collections需要注意的一点 22.2. 双向的一对多关系(Bidirectional one-to-many) 22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值...

    hibernate 体系结构与配置 参考文档(html)

    第一部分 - 第一个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. 映射...

    hibernate3.04中文文档.chm

    22. 示例:父子关系(Parent Child Relationships) 22.1. 关于collections需要注意的一点 22.2. 双向的一对多关系(Bidirectional one-to-many) 22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值...

    Hibernate3+中文参考文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and ...

    hibernate总结

    f) All-delete-orphan 父子关系的表设为此值,表示,当删除一个父对象时,将这个set容器中的子对象全部删除 2. Inverse 只能在set映射时使用;它的作用是:是否根据set容器中存放的对象,产生update语句,维护关系...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     21.5 利用Hibernate的版本控制来实现乐观锁  21.5.1 使用元素  21.5.2 使用元素  21.5.3 对游离对象进行版本检查  21.5.4 强制更新版本  21.6 实现乐观锁的其他方法  21.7 小结  21.8 思考题 第22章 管理...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     21.5 利用Hibernate的版本控制来实现乐观锁  21.5.1 使用元素  21.5.2 使用元素  21.5.3 对游离对象进行版本检查  21.5.4 强制更新版本  21.6 实现乐观锁的其他方法  21.7 小结  21.8 思考题 第22章 管理...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     21.5 利用Hibernate的版本控制来实现乐观锁  21.5.1 使用元素  21.5.2 使用元素  21.5.3 对游离对象进行版本检查  21.5.4 强制更新版本  21.6 实现乐观锁的其他方法  21.7 小结  21.8 思考题 第22章 管理...

Global site tag (gtag.js) - Google Analytics