一对多 多对一 关系映射

public class Department
{
    private Integer deptId;
    
    private String deptName;
    
    private Set<Employee> empSet;	// 关系对象集合
}

public class Employee
{
    private Integer empId;
    
    private String empName;
    
    private Department dept;		 // 关系对象属性
}

--------------------------------------------------------------
<hibernate-mapping package="entity">

	<class name="Employee" table="employee">
		<id name="empId">
			<generator class="native" />
		</id>
		<property name="empName"></property>
<!--		<property name="deptId"></property>  已经在下面配置了该列,就不能重复配置了-->

		
		<many-to-one name="dept" class="Department" cascade="save-update" lazy="false"> // 引用 关系对象deptId
			<column name="deptId"></column>
		</many-to-one>

	</class>


	<class name="Department" table="department">
		<id name="deptId">
			<generator class="native" />
		</id>
		<property name="deptName"></property>

		<set name="empSet" cascade="save-update" lazy="false" inverse = "true">		// 关系对象 引用 deptId
			<key column="deptId"></key>
			<one-to-many class="Employee"></one-to-many>
		</set>

	</class>

</hibernate-mapping>

 一对多关系映射要注意的问题:

    1.多对一方,配置关系属性时,切莫要重复配置关系外键

    2.多对一方,lazy属性要为false,即禁用懒加载,直接加载关系对象

 

 

如果一个表与其它表有很多关系  既有 一对一 又有一对多,那就先配置 一对一 再配置 一对多。

保证每一对关系都正确,那么再多的关系配置也是在一对一对的基础上加起来的。

 

只要细心的保证每一列都有配置,每一列都没有重复配置,一般是不会出错的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值