<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日韩| 立即播放免费毛片一级| 免费羞羞视频网站| 亚洲乱亚洲乱妇24p| 大陆一级毛片免费视频观看i| 亚洲冬月枫中文字幕在线看| 99在线精品视频观看免费| 亚洲欧洲久久精品| 亚洲免费综合色在线视频| 亚洲一区二区三区亚瑟| 午夜毛片不卡高清免费| 美女啪啪网站又黄又免费| 精品亚洲一区二区三区在线观看| 青青操免费在线观看| 亚洲激情在线视频| 99国产精品永久免费视频| 亚洲高清有码中文字| 国产成人高清精品免费鸭子| 一边摸一边爽一边叫床免费视频 | 乱爱性全过程免费视频| 337p日本欧洲亚洲大胆裸体艺术| 水蜜桃视频在线观看免费播放高清 | 成人免费看片又大又黄| 国内成人精品亚洲日本语音| 亚洲综合国产精品第一页| 免费A级毛片无码A∨| 亚洲人成色777777老人头| 国产亚洲人成A在线V网站| 中文字幕免费在线看线人 | 亚洲午夜精品久久久久久浪潮| 日本高清免费观看| 最新亚洲春色Av无码专区| 亚洲欧洲精品成人久久曰影片| 免费不卡在线观看AV| 最新亚洲人成网站在线观看| 亚洲av综合avav中文| 午夜视频免费观看| 亚洲免费人成在线视频观看 | 国产免费MV大全视频网站| 亚洲AV综合色区无码二区爱AV|