映射属性|AttributeOverride

来源:中国IT实验室 作者:佚名 2008-05-13 出处:pcdog.com

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

}

}



上一篇:Java基础入门—嵌入映射表结构
下一篇:将两个表中相同信息保存在Address类中