【发布时间】:2015-01-10 16:26:25
【问题描述】:
我正在学习 Spring Core 认证,但我对课程幻灯片上的这个 JPA 示例有一些疑问:
有 2 个实体类映射 2 个表:
1) 映射 T_CUSTOMER 数据库表的 Customer 实体类:
@Entity
@Table(name= “T_CUSTOMER”)
public class Customer {
@Id
@Column (name=“cust_id”)
private Long id;
@OneToMany
@JoinColumn (name=“cid”)
private Set<Address> addresses;
…
…
…
}
2) Address 映射T_ADDRESS DB 表的实体类:
@Entity
@Table(name= “T_ADDRESS”)
public class Address {
@Id private Long id;
private String street;
private String suburb;
private String city;
private String postcode;
private String country;
}
所以我对这个提供的例子有两个疑问:
1) 为什么进入Address类没有@Column注解?如果 @Column 注释没有提供,JPA 可能会使用属性名称与数据库表列名称进行默认匹配?
2) 正如您在前面的示例中看到的那样,Customer 实体类包含表示 一对多 关系的字段
@OneToMany
@JoinColumn (name=“cid”)
private Set<Address> addresses;
所以我认为这意味着 T_CUSTOMER 表的一行与 T_ADDRESS 表的更多行相关联,并且这些行表示为 T_ADDRESS 表的集合strong>地址模型实例。对吗?
现在我怀疑加入是使用 cid 名称完成的。此名称不显示为我的 Address 类的属性。那是什么?它是属于 T_ADDRESS 的列的名称,并且没有被实体类 Address 映射吗?
Tnx
【问题讨论】:
标签: java spring hibernate jpa jpa-2.0