如何在Hibernate中读取实体之间的OneToMany或ManyToOne关系?

问题描述 投票:1回答:1

我正在学习休眠并试图了解如何建立两个实体之间的关系(OneToOneOneToManyManyToMany)。考虑一下简单的场景:

User Entity:

@Entity
class User {
    @Id
    private userId;

    private Vehicle vehicle;

    // other code
}

Vehicle Entity:

@Entity
public class Vehicle {
    @Id
    private int vehicleId;
    private String desc;

    // other code
}

My aim is to specify:

One to Many relationshipOne to oneUserVehicle实体之间的关系。

我知道有OneToOneOneToMany注释,但我无法理解这种关系是如何解释的?它取决于其他实体所在的实体吗?

For example:

 @Entity
class User {
    @Id
    private userId;

    private Vehicle vehicle;

    // other code
}

正如我们所看到的,我将Vehicle实体放在User实体中,如果我在OneToMany实体上使用Vehicle注释,它是否意味着User - > Vehicle实体之间的1:M关系。

任何人都可以帮我理解这个吗?

hibernate jpa one-to-many many-to-one
1个回答
2
投票

我将这个答案更好地解释,但请记住,这些都是hibernate映射的基础,你可以在任何在线教程中阅读它们。

用户表是:

userId   userName   etc

和车辆表

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
}

这就是它所知道的单向映射,你只需要让hibernate了解db上FK的存在

@ManyToOne指定关系类型(一个车辆是一个用户)

虽然@JoinColumn用于说“hey hibernate Vehicle table有一个FK朝向User表”,其名称和referencedColumnName是Fk中涉及的db列名。

如果你想要你可以将继承作为双向进行,这有时会在你从关联的非拥有方(在这种情况下从用户到车辆)添加引用时很有用,这样你就可以从两个类到另一个类

@Entity
class User {
    @Id
    private userId;
    private String userName

    @OneToMany(mappedBy = "user")
    private List<Vehicle> vehicleList;
    // other code
}

MappedBy必须指定映射关系的其他字段

© www.soinside.com 2019 - 2024. All rights reserved.