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,沒有問題