美文网首页
hibernate----联合主键映射

hibernate----联合主键映射

作者: 倬永 | 来源:发表于2017-05-25 21:19 被阅读0次

    以课程表和学生表为例,课程表有课程编码和课程名称,学生表有学号和姓名,当学号和课程编码都确定时,就可以确定该学生这门课程的分数。
    1.创建学生类和课程表类,以及把学生的学号,课程的编号组成一个实体类,共三个实体类

    (1)学生类 student.class
    package entity;

    public class Student {
    private int num;
    private String name;

    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    (2)课程表类(感觉这个类没有用到,其实可以不写) Test.class
    

    package entity;

    public class Test {

    private int Tnum;
    private String classname;
    public int getTnum() {
        return Tnum;
    }
    public void setTnum(int tnum) {
        Tnum = tnum;
    }
    public String getClassname() {
        return classname;
    }
    public void setClassname(String classname) {
        this.classname = classname;
    }
    

    }
    (3) 主键类 Pass.class
    package entity;

    import java.io.Serializable;

    public class Mainkey implements Serializable{

    private static final long serialVersionUID = 1L;
    private int num;
    private int Tnum;
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public int getTnum() {
        return Tnum;
    }
    public void setTnum(int tnum) {
        Tnum = tnum;
    }
    

    }
    }
    2.配置实体类的映射文件
    (1)pass.hbm.xml
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="entity">

    <class name="Pass" table="Pass">
       <composite-id name="mainkey">
       <key-property  name="num" type="integer" ></key-property>
        <key-property  name="Tnum" type="integer"></key-property>
       </composite-id>
        <property name="grade" type="integer"/>
       
    </class>
    

    </hibernate-mapping>

    3.配置hibernate.cfg.xml
    其他的配置相同,主要是把pass类的配置文件加进去
    这一句 “ <mapping resource="entity/Pass.hbm.xml"/>”

    4.写测试类
    package text;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;

    import entity.Mainkey;

    import entity.Pass;

    public class Text02 {

    public static void main(String[] args) {
        Configuration cfg=new Configuration().configure("hibernate.cfg.xml");
        SessionFactory sessionFactory=cfg.buildSessionFactory();
        Session session=sessionFactory.openSession();
        Transaction ts=session.beginTransaction();
        
        Mainkey mainkey=new Mainkey();
        mainkey.setNum(4017);
        mainkey.setTnum(10001);
        
        Pass pass=new Pass();
        pass.setGrade(90);
        pass.setMainkey(mainkey);
        session.save(pass);
        ts.commit();
        session.close();
        
        
        
        
        
    }
    

    }

    相关文章

      网友评论

          本文标题:hibernate----联合主键映射

          本文链接:https://www.haomeiwen.com/subject/lzgzxxtx.html