<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
    當(dāng)我們需要使用一個或多個屬性變量(表中的一列或多列)聯(lián)合起來作為主鍵,我們需要使用復(fù)合主鍵。在EJB3.0中復(fù)合主鍵要求我們編寫一個復(fù)合主鍵類( Composite Primary Key Class )。下面是個小例子,在Student中要用sid和name做復(fù)合主鍵。
    Student實體類:
     1 import javax.persistence.Column;
     2 import javax.persistence.Entity;
     3 import javax.persistence.Id;
     4 import javax.persistence.IdClass;
     5 
     6 @Entity
     7 @IdClass(StudentPK.class)
     8 public class Student {
     9     
    10     private String sid;
    11     private String name;
    12     private String age;
    13 
    14     @Id
    15     public String getSid() {
    16         return sid;
    17     }
    18     public void setSid(String sid) {
    19         this.sid = sid;
    20     }
    21     
    22     @Id
    23     public String getName() {
    24         return name;
    25     }
    26     public void setName(String name) {
    27         this.name = name;
    28     }
    29     
    30     @Column
    31     public String getAge() {
    32         return age;
    33     }
    34     public void setAge(String age) {
    35         this.age = age;
    36     }
    37 
    38 }
    主鍵StudentPK類:
     1 import java.io.Serializable;
     2 
     3 public class StudentPK implements Serializable{
     4     
     5     private static final long serialVersionUID = 1L;
     6     
     7     private String sid;
     8     private String name;
     9     
    10     public StudentPK(){}
    11     public StudentPK(String sid,String name){
    12         this.sid = sid;
    13         this.name = name;
    14     }
    15     
    16     public String getSid() {
    17         return sid;
    18     }
    19     public void setSid(String sid) {
    20         this.sid = sid;
    21     }
    22     public String getName() {
    23         return name;
    24     }
    25     public void setName(String name) {
    26         this.name = name;
    27     }
    28     
    29     @Override
    30     public int hashCode() {
    31         final int prime = 31;
    32         int result = 1;
    33         result = prime * result + ((name == null? 0 : name.hashCode());
    34         result = prime * result + ((sid == null? 0 : sid.hashCode());
    35         return result;
    36     }
    37     
    38     @Override
    39     public boolean equals(Object obj) {
    40         if (this == obj)
    41             return true;
    42         if (obj == null)
    43             return false;
    44         if (getClass() != obj.getClass())
    45             return false;
    46         final StudentPK other = (StudentPK) obj;
    47         if (name == null) {
    48             if (other.name != null)
    49                 return false;
    50         } else if (!name.equals(other.name))
    51             return false;
    52         if (sid == null) {
    53             if (other.sid != null)
    54                 return false;
    55         } else if (!sid.equals(other.sid))
    56             return false;
    57         return true;
    58     }
    59     
    60 }
    主鍵類必需滿足下列條件:
    (1)必需被序列化
    (2)必需有一個公共的無參構(gòu)造方法
    (3)必需實現(xiàn)equals()和hashCode()方法

    當(dāng)你查詢Student實體時必須使用主鍵類才能識別實體如:
        StudentPK pk = new StudentPK("bj1001","jakin");
        Student student 
    = entityManager.find(Student.class, pk);
    在測試本例時筆者犯了兩個低級的錯誤,一是測試環(huán)境的數(shù)據(jù)庫不是項目運行的數(shù)據(jù)庫,二是實體類中的屬性命名用了關(guān)鍵字,請引以為戒。
    posted on 2009-08-19 08:23 seal 閱讀(482) 評論(0)  編輯  收藏 所屬分類: HibernateEJB
    主站蜘蛛池模板: 免费一级毛片在播放视频| 在线看片无码永久免费视频| 久久这里只精品热免费99| 在线免费观看国产| 久久久www成人免费毛片| 日本成人在线免费观看| 久久亚洲国产成人影院网站| 亚洲精品自产拍在线观看动漫| 亚洲国产午夜电影在线入口| 看免费毛片天天看| 99久久国产精品免费一区二区| 国产精品视频免费| 国产一级一片免费播放i| 国产亚洲精品精华液| 亚洲乱码一二三四五六区| 国产亚洲蜜芽精品久久| 国产成人AV片无码免费| 青青青国产免费一夜七次郎 | 亚洲免费在线视频| 成人性生交视频免费观看| 亚洲一区二区三区无码影院| 久久亚洲熟女cc98cm| 风间由美在线亚洲一区| 久久国产乱子精品免费女| 免费黄网在线观看| 亚洲AV永久无码精品一百度影院| 亚洲va久久久久| 三年片在线观看免费| 日本无吗免费一二区| 日韩亚洲Av人人夜夜澡人人爽 | 亚洲一级特黄特黄的大片| 国产99精品一区二区三区免费 | 麻豆国产精品免费视频| 亚洲AⅤ永久无码精品AA| 亚洲无人区视频大全| 男人扒开添女人下部免费视频| 18禁男女爽爽爽午夜网站免费| 亚洲精品456播放| 精品日韩99亚洲的在线发布| 成全视频在线观看免费| 国产美女a做受大片免费|