<many-to-one/>多对一:查询某个学生的同时,可查询对应班级
tGroup
public class tGroup implements Serializable{
private Long id;
private String name;
//省略GET/SET
}
tUser
public class tUser implements Serializable{
private Long id;
private String name;
private tGroup tgr;
//省略GET/SET
}
tGroup.hbm.xml
<hibernate-mapping>
<class name="com.hibtest2.entity.tGroup" table="t_group">
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">seq_emp</param>
</generator>
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="50"></column>
</property>
</class>
</hibernate-mapping>
tUser.hbm.xml
<many-to-one name="tgr" column="group_Id" class="com.hibtest2.entity.tGroup" cascade="all">
tUser类中的tgr对象 的 主键 对应 tUser表中的group_Id属性, class为tGroup类地址
<hibernate-mapping>
<class name="com.hibtest2.entity.tUser" table="t_user">
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">seq_emp</param>
</generator>
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="50"></column>
</property>
<many-to-one name="tgr" column="group_Id" class="com.hibtest2.entity.tGroup" cascade="all"></many-to-one>
</class>
</hibernate-mapping>
test1新增:新tUser和新tGroup
session = sf.openSession();
session.beginTransaction();
tGroup tg = new tGroup();
tg.setName("C++");
tUser tu = new tUser();
tu.setName("zl");
tu.setTgr(tg);
session.save(tu);
session.getTransaction().commit();
session.close();
新增:新tUser对应老tGroup
session = sf.openSession();
session.beginTransaction();
tGroup tg = (tGroup) session.get(tGroup.class, Long.parseLong("24"));
tUser tu = new tUser();
tu.setName("zl");
tu.setTgr(tg);
session.save(tu);
session.getTransaction().commit();
session.close();
查询:某学生及对应班级 ( more - one 的意义)
session = sf.openSession();
tUser t = (tUser) session.get(tUser.class, Long.parseLong("21"));
System.out.println("学生姓名:"+t.getName());
System.out.println("学生降级"+t.getTgr().getName());
session.close();