注解的使用
@Embedded
@Entity
@Table(name = "t_people")
public class People {
@Id
@GeneratedValue
private Integer id;
@Column
private String name;
@Embedded
private Address address;
// getter and setter
}
@Embeddable
public class Address {
private String street;
private String city;
private String state;
@Column(name="code")
private String zipCode;
// getter and setter
}
带有@Embeddable注解的类的属性,不需要加@Column注解,就会自动保存至数据库。 如果属性名由多个单词组成,则其对应的列名会转为下划线形式,如上的zipCode会自动转为"zip_code"。 如果与数据库表的列名不一致,需要加上@Column注解,使用name属性指定列名。
使用@Embedded注解可以覆盖@Embeddable中@Column指定的列名。
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "state", column = @Column(name = "state")),
@AttributeOverride(name = "postCode", column = @Column(name = "zip_code"))
})
private Address address;
这时,zipCode对应到数据库的列名会变成zip_code。