Hello Word

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

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     }

 

posted on 2016-05-31 15:36  该名称已被使用  阅读(346)  评论(0编辑  收藏  举报