hibernate之多对一关联映射

来源:互联网 发布:连笔字签名设计软件 编辑:程序博客网 时间:2024/05/17 08:09

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,没有问题