我刚刚开始学习JPA和Hibernate,我对了解使用Hibernate在JPA中读取/概念化@OneToMany映射的正确方法感到困惑。
例如,假设一个帐户可以有很多交易,但是一个交易只能链接到一个帐户。
因此,我将这种观点理解为“帐户类/实体”,因为“一个帐户可以进行很多交易,因此我应该将“交易”字段标记为@OneToMany。
从另一角度看待“交易类/实体”,我认为就像“一个交易只能链接到一个帐户,因此我应该在交易实体中将帐户字段标记为@OneToOne”
但是,从我观看的几乎所有视频教程和Web资源中都提到,交易实体的“帐户”字段应为@ManyToOne,因为“许多交易可以与一个帐户链接”,这是正确的,但对我来说,这是相同的关系帐户实体中提到的内容以不同的方式解释,但没有说明关系的另一面“一个交易只能链接到一个帐户”
请帮助我理解如何阅读以及如何操作,为什么当一个实体为@OneToMany时另一侧的关系为何。
@Entity
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long accountId;
@OneToMany(cascade = CascadeType.ALL)
private List<Transaction> transactions = new ArrayList<>();
}
@Entity
public class Transaction {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long transactId;
@ManyToOne
Account account;
}
答案 0 :(得分:0)
我喜欢这样想:
@Entity
public class Account {
// Here I read this as "One Account (The entity we are in) ToMany Transactions (The foreign entity)
@OneToMany(cascade = CascadeType.ALL)
private List<Transaction> transactions = new ArrayList<>();
}
@Entity
public class Transaction {
// If we use the same process as above we get:
// Many Transactions (The entity we are in) ToOne Account (The foreign entity)
@ManyToOne
Account account;
}