千里冰封
          JAVA 濃香四溢
          posts - 151,comments - 2801,trackbacks - 0
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          盡管千里冰封
          依然擁有晴空

           

          留言簿(204)

          隨筆分類(197)

          隨筆檔案(189)

          文章檔案(2)

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 966084
          • 排名 - 35

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          EJB中的集合映射

          我們在前面的一對多以及多對多的情況可以看到,我們會需要對集合進行映射,對于基于List的映射我們在前面已經看過了。但是如果我們想對Map進映射呢,那該怎么辦?

          其實JPA已經幫我們設計好了。那就是利用@MapKey來進行注釋。

          我們還是先要看看MapKey的代碼吧:

          package javax.persistence;

          @Target({METHOD, FIELD}) @Retention(RUNTIME)
          public @interface MapKey
          {
             String name( ) 
          default "";
          }

          應用如下:

          @Entity
          public class Customer implements java.io.Serializable {
              
              
          private Map<String, Phone> phoneNumbers = new HashMap<String, Phone>( );
              
              @OneToMany(cascade
          ={CascadeType.ALL})
              @JoinColumn(name
          ="CUSTOMER_ID")
           @MapKey(name
          ="number"

              
          public Map<String, Phone> getPhoneNumbers( ) {
                 
          return phoneNumbers;
              }
              
          public void setPhoneNumbers(Map<String, Phone> phones) 
           {
                  
          this.phoneNumbers = phones;
              }
          }

                  在此我們可以看出,@MapKey它只有一個方法,那就是指定名字,并且指定的名字必須是它所在的實體的成員,否則的話就識別不了了,如果我們留空的話,那默認的key就是這個實體類的主鍵。用它的好處就是,我們有時候對于這個實體來說,僅僅需要知道的是它的某一部份,并且我們希望利用這一部分來進行對實體的操作以及辨別。這樣用Map就比用List方便一些了。

                  在此我們只是在以前一對多的基礎上改了一點點而已,以前一對多的時候,沒有@MapKey的注釋,那么它返回的就是一個List,現在我們加了@MapKey的注釋,這樣EntityManager來進行操作的時候,就會自動把我們的實體列表根據我們所指定的Key生成一個Map了。在某些情況下用Map確實比用List要方便許多。





          盡管千里冰封
          依然擁有晴空

          你我共同品味JAVA的濃香.
          posted on 2007-10-02 13:55 千里冰封 閱讀(1172) 評論(2)  編輯  收藏 所屬分類: JAVAEE

          FeedBack:
          # re: EJB學習日記(15)
          2007-10-02 21:08 | sitinspring
          國慶還在學習啊  回復  更多評論
            
          主站蜘蛛池模板: 罗定市| 武宣县| 泗洪县| 北辰区| 开化县| 冕宁县| 涞源县| 临澧县| 五家渠市| 宣城市| 南昌县| 南城县| 建阳市| 会昌县| 盐亭县| 南岸区| 郓城县| 高安市| 太康县| 诸暨市| 凉山| 布尔津县| 墨脱县| 安龙县| 惠来县| 徐州市| 芒康县| 柘荣县| 山阳县| 荣昌县| 开原市| 丰都县| 黄大仙区| 德江县| 石林| 福清市| 清丰县| 长宁县| 台湾省| 吐鲁番市| 江油市|