一_对_多_Hibernate
Hibernate--多对一
//部门表
create table TDept(
d_Id varchar2(50) primary key,
d_Name varchar2(50) not null
);
//员工表
create table TEmp(
e_Id varchar2(50) primary key,
e_Name varchar2(50) not null,
e_Sex varchar2(50) not null,
e_Dept varchar2(50) not null//(外键列)
);
//部门实体类
public class TDept implements Serializable{
private String dId;
private String dName;
private Set<TEmp> emps;
...省略get(),set()
}
//员工实体类
public class TEmp implements Serializable{
private String eId;
private String eName;
private String eSex;
private TDept dept;
...省略get(),set()
}
//部门表映射文件--TDept.hbm.xml
<hibernate-mapping package="com.rt.xbliuc.pojos">
<class name="TDept" table="TDept">
<id name="dId" column="d_Id">
<generator column="d_Name"/>
<set name="emps">
<key column="d_Id"/>
<one-to-many inverse="true"> inverse属性表示,主外键关键由一的一方来维护
</class>
</hibernate-mapping>
//员工表映射文件--TEmp.hbm.xml
<hibernate-mapping package="com.rt.xbliuc.pojos">
<class name="TEmp" table="TEmp">
<id name="eId" column="e_Id">
<generator column="e_Name"/>
<property name="eSex" column="e_Sex"/>
<many-to-one name="dept" column="e_Dept"/>
</class>
</hibernate-mapping>
//Test.java -- 测试类
Transaction transaction = session.beginTransaction();
TDept dept = new TDept("2", "22");
TEmp emp = new TEmp("22", "222", "222", dept);
session.save(dept);
session.save(emp);
transaction.commit();