Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Hibernate中读取实体之间的一对一或多对一关系?_Hibernate_Jpa_One To Many_Many To One - Fatal编程技术网

如何在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:

我正在学习hibernate并试图了解如何在两个实体之间建立关系(
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
}