如何在Hibernate中读取实体之间的一对一或多对一关系?
我正在学习hibernate并试图了解如何在两个实体之间建立关系(如何在Hibernate中读取实体之间的一对一或多对一关系?,hibernate,jpa,one-to-many,many-to-one,Hibernate,Jpa,One To Many,Many To One,我正在学习hibernate并试图了解如何在两个实体之间建立关系(OneToOne,OneToMany,ManyToMany)。考虑一下简单的场景: 用户实体: 车辆实体: 我的目的是具体说明: 一对多关系或用户和车辆实体之间的一对一关系 我知道有OneToOne,OneToMany注释,但我无法理解这种关系是如何解释的?它是否取决于另一个实体放在哪个实体中 例如: 如我们所见,我已将车辆实体放置在用户实体中,如果我在车辆实体顶部使用OneToMany注释,这是否意味着用户->车辆实体之间的1:
OneToOne
,OneToMany
,ManyToMany
)。考虑一下简单的场景:
用户实体:
车辆实体:
我的目的是具体说明:
一对多关系
或用户
和车辆
实体之间的一对一
关系
我知道有OneToOne
,OneToMany
注释,但我无法理解这种关系是如何解释的?它是否取决于另一个实体放在哪个实体中
例如:
如我们所见,我已将车辆
实体放置在用户
实体中,如果我在车辆
实体顶部使用OneToMany
注释,这是否意味着用户
->车辆
实体之间的1:M关系
有人能帮我理解这一点吗?为了更好地解释,我会回答这个问题,但请记住,这些都是hibernate映射的基础,您可能可以在任何在线教程中阅读它们 用户表为:
userId userName etc
和车辆表
vehicleId userIdFK etc
这是一个明显的一对多关系:一个用户多辆车
要映射此关系,您必须
@Entity
class User {
@Id
private userId;
private String userName
// other code
}
及
这就是所谓的单向映射,您只需要让hibernate知道数据库上存在FK
@指定关系类型的多个选项(一辆车属于一个用户)
而@JoinColumn用于表示“hey hibernate Vehicle table有一个FK指向用户表”,其名称和ReferenceColumnName是FK中涉及的db列名
如果您愿意,您可以将relayionship设置为双向的,这在您添加来自关联的非拥有方(在本例中是从用户到车辆)的引用时非常有用,因此您可以从两个类到另一个类
@Entity
class User {
@Id
private userId;
private String userName
@OneToMany(mappedBy = "user")
private List<Vehicle> vehicleList;
// other code
}
@实体
类用户{
@身份证
私有用户ID;
私有字符串用户名
@OneToMany(mappedBy=“用户”)
私人名单车辆名单;
//其他代码
}
MappedBy必须指定映射关系的其他字段一个拥有多辆车的用户应该映射到一个车辆集合,以及车辆实体上的一个用户字段感谢您的回复;但我的疑问仍然是:我们如何解释这种关系?是否基于嵌入到其他实体中的实体?您可以检查。然后呢。是,
用户
(1)(m)车辆
。正如Zeromus所说:私人收集车辆在这种情况下,应在User
中使用code>。
vehicleId userIdFK etc
@Entity
class User {
@Id
private userId;
private String userName
// other code
}
@Entity
pubic class Vehicle {
@Id
private int vehicleId;
private String desc;
@ManyToOne
@JoinColumn(name = "userIdFK", referencedColumnName = "userId")
private User user;
// other code
}
@Entity
class User {
@Id
private userId;
private String userName
@OneToMany(mappedBy = "user")
private List<Vehicle> vehicleList;
// other code
}