zoukankan      html  css  js  c++  java
  • hibernate笔记--组合主键映射方法

      一个数据库表中其主键有可能不止一个属性,同样映射到实体类中,可能有两个或多个属性共同配置成为一个主键,假设一个实体类Score,其主键有两个属性stuId(学生编号)和subjectId(科目编号),在hibernate环境下应该这样配置:

    新建一个实体类ScoreId,属性为stuId,和subjectId,该类需要实现serializable接口(最好重写equals方法和hashcode方法):

    public class ScoreId implements Serializable {
    
        private int stuId;
        private int subjectId;
        public int getStuId() {
            return stuId;
        }
        public void setStuId(int stuId) {
            this.stuId = stuId;
        }
        public int getSubjectId() {
            return subjectId;
        }
        public void setSubjectId(int subjectId) {
            this.subjectId = subjectId;
        }
        public ScoreId(int stuId, int subjectId) {
            super();
            this.stuId = stuId;
            this.subjectId = subjectId;
        }
        
    }

    新建实体类Score:

    public class Score {
        private ScoreId scoreId;
        private double result;
        public ScoreId getScoreId() {
            return scoreId;
        }
        public void setScoreId(ScoreId scoreId) {
            this.scoreId = scoreId;
        }
        public double getResult() {
            return result;
        }
        public void setResult(double result) {
            this.result = result;
        }
        public Score(ScoreId scoreId, double result) {
            super();
            this.scoreId = scoreId;
            this.result = result;
        }
            
    }

    其次是Score.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="com.wang.pojo">
        <class name="Score" >
        <composite-id name="scoreId" class="ScoreId">
            <key-property name="stuId"></key-property>
            <key-property name="subjectId"></key-property>
        </composite-id>
        
        <property name="result"></property>
        </class>
    </hibernate-mapping>

    hibernate.cfg.xml这里就省略了,现在新建一个测试类,用于生成数据库表以及向数据库中存放一条数据:

    @Test
        public void testCreateDB(){
            Configuration cfg = new Configuration().configure();
            SchemaExport se=new SchemaExport(cfg);
            //第一个参数是否生成ddl脚本 第二个参数是否执行到数据库
            se.create(true,true);
        }
        @Test
        public void testSave(){
            Session session = HibernateUtil.getSession();
            Transaction tx = session.beginTransaction();
            Score s=new Score(new ScoreId(2,5),88);
            session.save(s);
            tx.commit();
            session.close();
        }
  • 相关阅读:
    Pycharm简单使用教程
    【Jenkins学习】【第二节】 jenkins构建触发器定时任务
    Docker之从零开始制作docker镜像
    手机APP自动化环境搭建
    格式字符详解
    Bash Shell之内建命令和保留字
    asp.net 实现后台异步处理的方式
    Spring3.2.0 之后各个版本完整包下载地址
    Oracle的rollup、cube、grouping sets函数
    C# 委托类型及使用
  • 原文地址:https://www.cnblogs.com/fingerboy/p/5234308.html
Copyright © 2011-2022 走看看