有点傻 发表于 2009-1-23 11:47:58

映射属性|AttributeOverride

@AttributeOverrides由多个@AttributeOverride注释组成,每个@AttributeOverride表示属性的映射,它的定义如以下所示:
@Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME)
public @interface AttributeOverride {
String name();
Column column();
}
在使用@AttributeOverride注释应注意以下几方面的问题:
l         name属性表示嵌入式类中的属性名称。
l         column属性表示,所嵌入的实体类中的列定义,其中@Column标记表示的意义请读者参阅5.2.2小节。
l         例如将tb_customer表中的customer_zip字段映射为Address中的属性zip。代码如下所示:
@AttributeOverride(name = "zip",   
column = @Column(name = "customer_zip")
)
l         使用嵌入式类的好处是:多个实体中都可以共享一个嵌入式类,方便了对实体的操作。例如现在ContactEO也嵌入Address类,就很方便的映射为以下所示:
public class CustomerEO implements Serializable {
   
         private Integer id;
         private String name;
         private String nickname;
……getter和setter方法省略
         private Address address;
         @Embedded
         @AttributeOverrides( {
                   @AttributeOverride(name = "zip", column = @Column(name = "contact_zip")),
                   @AttributeOverride(name = "line1", column = @Column(name = "contact_line1")),   
         })
         public Address getAddress() {
                   return address;
         }
         public void setAddress(Address address) {
                   this.address = address;
         }
}
页: [1]
查看完整版本: 映射属性|AttributeOverride