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帛羅閣 閱讀(3019) 評論(0)  編輯  收藏 所屬分類: 開源軟件

          導航

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

          統計

          常用鏈接

          留言簿(15)

          隨筆分類

          隨筆檔案

          相冊

          收藏夾

          博客

          文檔

          站點

          論壇

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 惠安县| 榆中县| 景德镇市| 海丰县| 海兴县| 旬邑县| 呼伦贝尔市| 金溪县| 临颍县| 宁乡县| 新乡市| 江都市| 清原| 密云县| 静海县| 博乐市| 青神县| 石棉县| 密山市| 麻栗坡县| 舞阳县| 吉水县| 邻水| 辽阳市| 丰顺县| 孟连| 公安县| 普兰县| 湾仔区| 会同县| 永昌县| 三河市| 安阳市| 鹤山市| 江口县| 巴里| 沁阳市| 伊川县| 江山市| 浙江省| 宜兴市|