• 组合主键映射


    通过组件来实现组合主键的步骤:

    1、 编写组合主键的类,该类必须实现Serializable接口、生成对应的get/set方法;最好实现equalshashCode方法

     1 public class ScoreId implements Serializable{
     2     private int stuId;//学生编号
     3     private int subjectId;//科目编号
     4     public int getStuId() {
     5         return stuId;
     6     }
     7     public void setStuId(int stuId) {
     8         this.stuId = stuId;
     9     }
    10     public int getSubjectId() {
    11         return subjectId;
    12     }
    13     public void setSubjectId(int subjectId) {
    14         this.subjectId = subjectId;
    15     }
    16 }

    2、在主类中引用对应组件

     1 /**
     2  * 成绩
     3  * */
     4 public class Score {
     5     private ScoreId scoreId;
     6     private double result;//成绩
     7     
     8     public ScoreId getScoreId() {
     9         return scoreId;
    10     }
    11     public void setScoreId(ScoreId scoreId) {
    12         this.scoreId = scoreId;
    13     }
    14     public double getResult() {
    15         return result;
    16     }
    17     public void setResult(double result) {
    18         this.result = result;
    19     }
    20 }

    3、映射文件的编写

    1 <hibernate-mapping package="cn.siggy.pojo">
    2     <class name="Score">
    3         <composite-id name="scoreId" class="ScoreId">
    4             <key-property name="stuId"></key-property>
    5             <key-property name="subjectId"></key-property>
    6         </composite-id>
    7         <property name="result"/>
    8     </class>
    9 </hibernate-mapping>

    4、测试代码

     1 @Test
     2     public void testSave() throws HibernateException{
     3         Session session = null;
     4         Transaction tx = null;
     5         try{
     6             session = HibernateUtil.getSession();
     7             tx = session.beginTransaction();
     8             
     9             Score s = new Score();
    10             ScoreId sid = new ScoreId();
    11             sid.setStuId(2);
    12             sid.setSubjectId(6);
    13             s.setResult(89);
    14             s.setScoreId(sid);
    15             
    16             session.save(s);
    17             
    18             tx.commit();
    19             
    20         }catch (HibernateException e) {
    21             if(tx!=null)
    22                 tx.rollback();
    23             e.printStackTrace();
    24             throw e;
    25         }finally{
    26             HibernateUtil.closeSession();
    27         }
    28     }
  • 相关阅读:
    数据库的隔离
    Maven的工程类型有哪些
    Redis中的常用命令哪些
    flume--exec源
    hadoop基本组件原理小总结
    Idea 激活
    hadoop中遇到的各种错误记录
    MySQL认知
    Python爬虫之post请求
    Python爬取ithome的一所有新闻标题评论数及其他一些信息并存入Excel中。
  • 原文地址:https://www.cnblogs.com/jiangjianzhu/p/5546048.html
Copyright © 2020-2023  润新知