Dev@Free

          zJun's Tech Weblog

          [Hibernate Annotations] 嵌入組件(Component)映射

          組件(Component)類必須在類一級定義 @Embeddable 注解.

          在特定的實體的關聯屬性上使
          @Embedded @AttributeOverride 注解可以覆蓋該屬性對應的嵌入式對象的字段映射:

          @Entity
          public ? class ?Person? implements ?Serializable?{

          // ?Persistent?component?using?defaults
          Address?homeAddress;

          @Embedded
          @AttributeOverrides(?{
          @AttributeOverride(name
          = " iso2 " ,?column? = ?@Column(name = " bornIso2 " )?),
          @AttributeOverride(name
          = " name " ,?column? = ?@Column(name = " bornCountryName " )?)
          }?)
          Country?bornIn;

          }

          @Embeddable
          public ? class ?Address? implements ?Serializable?{
          String?city;
          Country?nationality;?
          // no?overriding?here
          }

          @Embeddable
          public ? class ?Country? implements ?Serializable?{
          private ?String?iso2;
          @Column(name
          = " countryName " )? private ?String?name;

          public ?String?getIso2()?{? return ?iso2;?}
          public ? void ?setIso2(String?iso2)?{? this .iso2? = ?iso2;?}

          public ?String?getName()?{? return ?name;?}
          public ? void ?setName(String?name)?{? this .name? = ?name;?}

          }

          說明:

          1.
          Person 有兩個組件屬性,分別是 homeAddress bornIn . homeAddress 屬性并沒有注解. 但是Hibernate自動檢測其對應的Address類中的 @Embeddable 注解, 并將其看作一個持久化組件.

          2.對于Country中已映射的屬性,則使用
          @Embedded @AttributeOverride 注解來覆蓋原來的字段映射值。

          3.
          Address 對象中還內嵌了 Country 對象, Hibernate通過在表達式中使用"."支持覆蓋多層嵌套(即嵌入式對象中還包括其他嵌入式對象)的字段映射.如下:

          @Embedded
          @AttributeOverrides(?{
          @AttributeOverride(name
          = " city " ,?column? = ?@Column(name = " fld_city " )?)
          @AttributeOverride(name
          = " nationality.iso2 " ,?column? = ?@Column(name = " nat_Iso2 " )?),
          @AttributeOverride(name
          = " nationality.name " ,?column? = ?@Column(name = " nat_CountryName " )?)
          // nationality?columns?in?homeAddress?are?overridden
          }?)
          Address?homeAddress;

          posted on 2007-03-07 16:17 zJun's帛羅閣 閱讀(3012) 評論(0)  編輯  收藏 所屬分類: 開源軟件

          導航

          <2007年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統計

          常用鏈接

          留言簿(15)

          隨筆分類

          隨筆檔案

          相冊

          收藏夾

          博客

          文檔

          站點

          論壇

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 隆回县| 崇义县| 综艺| 滨海县| 肃南| 锦州市| 鄢陵县| 武宁县| 淮滨县| 奉贤区| 柏乡县| 上饶市| 平阳县| 古浪县| 梧州市| 乌拉特后旗| 嘉祥县| 凤城市| 安多县| 二连浩特市| 河津市| 平和县| 南投市| 浮梁县| 东兰县| 镇沅| 赞皇县| 合肥市| 安陆市| 泸溪县| 彭州市| 泾川县| 香格里拉县| 博客| 行唐县| 个旧市| 衡阳市| 宜丰县| 乾安县| 长阳| 弥勒县|