hibernate之多对一关联映射

many-to-one  多对一关联映射 

 

Student - Class 多个学生属于一个班

public class Class {

private String  id

private String name

........

}

 

 

public class Student{

private String  id

private String name

........

private Class class

.........

}

 

 

 

 

Student.hbm.xml(学生映射文件) 如下:

........

<id name="id">

        <generator class="native" />

</id>

 

<property name="name" />

 

<money-to-one name="class" column="classid" />

.........

 

    在多的一端加一个字段 class,用 column 重命名为classidclassid 作为外键指向Class端。

 

    需要注意的是:save 时,先session.save(class),不然会报错(saveStudent)时会查找classid的值,没有分配classclassid值不存在,就会报TransientObjectException),所以要先分配了Class 

 

如果想偷懒的话,只要添加一个cascade属性,如下

<money-to-one name="class" column="classid" cascade="all"/>就可以自动save class,不会抛异常

cascade可以取得值:all  none  sava-update  delete

all代表在所有情况下都执行级联操作

none在所有情况下都不执行级联操作

sava-update保存和更新的时候执行级联操作

delete删除的时候执行级联操作

(级联:对象的连锁操作)

 

个人还是喜欢手动save ,清晰直观

加载(load)的时候,从student加载class,OK,没有问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值