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)

          隨筆分類

          隨筆檔案

          相冊

          收藏夾

          博客

          文檔

          站點

          論壇

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 三台县| 石渠县| 务川| 广丰县| 正定县| 安溪县| 开封市| 嘉善县| 茶陵县| 涡阳县| 四平市| 固原市| 通山县| 社旗县| 屯门区| 夏津县| 阿坝县| 垣曲县| 洪雅县| 平罗县| 佳木斯市| 江川县| 延寿县| 东明县| 麻城市| 新宾| 怀仁县| 清流县| 大余县| 开封县| 固始县| 渑池县| 柳州市| 莒南县| 萍乡市| 磐石市| 富平县| 荥阳市| 敦化市| 宁陕县| 博罗县|