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 重命名为classid。classid 作为外键指向Class端。
需要注意的是:save 时,先session.save(class),不然会报错(save(Student)时会查找classid的值,没有分配class,classid值不存在,就会报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,没有问题