Hibernate 多对一配置

public class Posts{ //文章
private int id;
private String name;
private String userid;
private User author;
set/get;
}


public class User{ //用户(作者)
private int id;
private String name;
}



<Post.hbm.xml>

<!-- 多方无法放弃外键维护权,所以不存在inverse,设置级联保存 -->
		 <many-to-one name="author" class="cn.test.domain.User" lazy="false" cascade="save-update" >
		      <column name="user_id" ></column>
		 </many-to-one>



讲解:

对应的两张表中必须有相应的外键关系,

author:既是指Posts类中的属性,用来存储关联的User对象

User:指User类

user_id:指的是User类对应的表中的外键(不是指类中的属性名,是表中的字段名),这里非常重要,我在这里迷惑了好久

在User类中有userid对应表中的user_id,但是写的是user_id,因为前面也写了,column指的就是字段


lazy:这个属性是指当加载父关联时是否要同时加载子关联,如果取 true 就是查询 Post (文章)时会同时把对应的 User (作者)加载进内存

如果取 false 那就是不会同时加载进内存,当使用到User对象时再加载,但是要保证 session 没有关闭

默认值为ture,延迟加载


inverse:放弃外键维护权,在多的一方中,默认为false,不能放弃外键维护

在一的一方中可以选择放弃外键维护,开发中也是这么做的



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值