Dev@Free

          zJun's Tech Weblog

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

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

          在特定的實(shí)體的關(guān)聯(lián)屬性上使
          @Embedded @AttributeOverride 注解可以覆蓋該屬性對(duì)應(yīng)的嵌入式對(duì)象的字段映射:

          @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;?}

          }

          說(shuō)明:

          1.
          Person 有兩個(gè)組件屬性,分別是 homeAddress bornIn . homeAddress 屬性并沒有注解. 但是Hibernate自動(dòng)檢測(cè)其對(duì)應(yīng)的Address類中的 @Embeddable 注解, 并將其看作一個(gè)持久化組件.

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

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

          @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) 評(píng)論(0)  編輯  收藏 所屬分類: 開源軟件

          導(dǎo)航

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

          統(tǒng)計(jì)

          常用鏈接

          留言簿(15)

          隨筆分類

          隨筆檔案

          相冊(cè)

          收藏夾

          博客

          文檔

          站點(diǎn)

          論壇

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 阳西县| 鸡西市| 韶关市| 富锦市| 宜良县| 清徐县| 赞皇县| 博客| 子长县| 松阳县| 兖州市| 隆子县| 东乡县| 罗甸县| 新闻| 同江市| 鄂托克旗| 平南县| 泸西县| 灵寿县| 前郭尔| 吐鲁番市| 历史| 临西县| 永济市| 乡宁县| 财经| 汶川县| 桐柏县| 宜阳县| 罗定市| 九江市| 双鸭山市| 沧源| 邛崃市| 定陶县| 平阴县| 云林县| 莒南县| 和静县| 苍南县|