注解的使用

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

results matching ""

    No results matching ""