Hibernate——<many-to-one/>

来源:互联网 发布:iscroll.js 官网下载 编辑:程序博客网 时间:2024/05/29 18:05

<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();  

0 0