这些是从Java Persistence With Hibernate(Manning)中获取的示例。我对书中的两个例子感到困惑
在这种情况下,ONE用户可以拥有许多结算明细。但是,只有一个结算明细是默认值,因此用户只有一个defaultBilling变量。
关于这一点,为什么我们使用@ManyToOne而不是@OneToMany进行映射?我怎么读这些?我的印象是用户类中的映射要从用户读取并移动到BillingDetails。因此,我希望看到@OneToMany(将其视为一个用户有很多计费明细。)
继续前进,在本书的另一个例子中
此处的更改是我们为每个用户存储所有结算明细(而不是单个默认结算明细)。在这种情况下,我看到@OneToMany注释符合我的期望
可以详细说明第一个例子如何使用逆向映射?或者这是书中的勘误表?
答案 0 :(得分:0)
以下映射:
@Entity
public class User {
@ManyToOne
private BillingDetails;
@OneToMany(mappedBy = "user")
private Collection<BillingDetails> billingDetails;
}
告诉您,用户可以拥有多个结算明细,但其中只有一个是默认结算明细。这是一个有效的组合,所以你所描述的实际上是两个不同的用例。
另一种方法是删除@ManyToOne
关联,并向BillingDetails
本身添加一个新属性/列,其中包含该计费是否属于其所属用户的默认值的信息,但是与将信息保存在User
:
BillingDetails
表中的两行,一行清除旧默认值,另一行设置默认值。