<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ù)庫不是項目運(yùn)行的數(shù)據(jù)庫,二是實體類中的屬性命名用了關(guān)鍵字,請引以為戒。
    posted on 2009-08-19 08:23 seal 閱讀(482) 評論(0)  編輯  收藏 所屬分類: HibernateEJB
    主站蜘蛛池模板: 亚洲av激情无码专区在线播放| 亚洲第一页综合图片自拍| 国产V亚洲V天堂无码| 一级午夜免费视频| 亚洲熟妇少妇任你躁在线观看无码| 免费大片av手机看片| 国产精品jizz在线观看免费| 亚洲AV无码成人精品区日韩| 国产精品冒白浆免费视频| WWW国产亚洲精品久久麻豆| 暖暖免费高清日本中文| 精品久久久久亚洲| 国产精品亚洲mnbav网站 | 亚洲精品无码你懂的网站| 永久免费精品影视网站| 亚洲一区爱区精品无码| 好紧我太爽了视频免费国产| 亚洲第一福利视频| 青青青免费国产在线视频小草| 亚洲男人天堂2018av| 国产精品视频免费一区二区三区| 一级中文字幕免费乱码专区| 亚洲色偷拍另类无码专区| 99久久精品免费精品国产| 亚洲人成网站色在线观看| 国产免费69成人精品视频| 国产在线国偷精品免费看| 亚洲国产老鸭窝一区二区三区| 91嫩草免费国产永久入口| 亚洲自偷自偷在线成人网站传媒| 国产91在线免费| 久久精品乱子伦免费| 国产99在线|亚洲| 亚洲午夜无码片在线观看影院猛| 特级无码毛片免费视频尤物| 亚洲av无码电影网| 亚洲乱亚洲乱少妇无码| 18级成人毛片免费观看| 黄页网址大全免费观看12网站| 亚洲AV无码成人精品区蜜桃| 日韩午夜免费视频|