Hibernate联合主键

话不多说,直接上demo:

 现在又一个model类:用于做组员和分组的映射,是有两字段:uid和gid(均为主键),此时如果要引入Hibernate,则需要一下步骤:

1.将uid和gid抽离出来作为一个独立类:

View Code
 1 package model;
 2 
 3 import java.io.Serializable;
 4 
 5 import javax.persistence.Embeddable;
 6 
 7 @Embeddable
 8 public class u_g_id implements Serializable{
 9 
10     private int uid;
11     private int gid;
12     
13     public u_g_id() {
14         super();
15     }
16     
17     public u_g_id(int uid, int gid) {
18         this.uid = uid;
19         this.gid = gid;
20     }
21     public int getUid() {
22         return uid;
23     }
24     public void setUid(int uid) {
25         this.uid = uid;
26     }
27     
28     public int getGid() {
29         return gid;
30     }
31     public void setGid(int gid) {
32         this.gid = gid;
33     }
34     
35     @Override
36     public boolean equals(Object o) {
37         if(o instanceof u_g_id) {
38             u_g_id pk = (u_g_id)o;
39             if(this.uid == pk.getUid() && this.gid == (pk.getGid())) {
40               return true;
41             }
42         }
43         return false;
44     }
45     @Override
46     public int hashCode() {
47         return super.hashCode();
48     }
49     
50 }

重点:1.@Embeddable标签

       2.必须重写equals和hashcode方法

 

2.在user_group类中引用这个类:

View Code
 1 package model;
 2 
 3 import javax.persistence.Entity;
 4 import javax.persistence.Id;
 5 
 6 @Entity
 7 public class user_group {
 8 
 9     private u_g_id id;
10 
11     @Id
12     public u_g_id getId() {
13         return id;
14     }
15 
16     public void setId(u_g_id id) {
17         this.id = id;
18     }
19     
20     
21     
22 }

然后就可以使用联合主键了:

View Code
 1 public boolean addMember(int uid,int gid){
 2         Session s = this.getSession();
 3         s.beginTransaction();
 4         try{
 5             user_group ug = new user_group();
 6             ug.setId(new u_g_id(uid,gid));
 7             s.save(ug);
 8             s.getTransaction().commit();
 9         }catch(Exception e){
10             s.getTransaction().rollback();
11             return false;
12         }
13         return true;
14     }

 

posted on 2012-12-25 22:29  saobchj  阅读(175)  评论(0编辑  收藏  举报

导航