【发布时间】:2017-04-29 18:34:33
【问题描述】:
我创建了两个实体客户和客户记录。
//customer class
@OneToOne
@JoinColumn(name="CUSTREC_ID", unique=true)
CustomerRecord customerRecord;
//customer record class
@OneToOne(mappedBy="customerRecord")
Customer customer;
mappedBy 的目的是表明所有者存在于关系的另一端。当我看到我的示例并看到 mappedBy 用作 mappedBy="customerRecord" 时,我发现它与 mappedBy 的定义相矛盾,因为映射是在关系的客户端完成的,并且 mappedBy 中提到的属性值是客户记录。如果我遵循 mappedBy 的定义,那么它应该是 mappedBy="customer" 因为那是持有关系的一方。那么我的理解有什么问题呢?
Queries generated:
Hibernate: insert into CustomerRecord (customerRecordName, CustomerRecordId) values (?, ?)
Hibernate: insert into Customer (customerName, CUSTREC_ID, customerId) values (?, ?, ?)
【问题讨论】:
-
mappedBy 期望另一个类中的 property / field 的名称,它映射关联。 Customer 中的属性确实命名为
customerRecord。例如,您需要意识到 Customer 可能有一个 currentCustomerRecord 和一个 oldCustomerRecord,两者都是 CustomerRecord 类型。所以指定类名是不够的。字段的名称对于知道哪个映射关联是必要的。