【问题标题】:Spring JPA - when to use relational mapping? eg @OneToManySpring JPA - 何时使用关系映射?例如@OneToMany
【发布时间】:2021-09-23 17:04:43
【问题描述】:

我知道并理解这个概念,已经应用到我的编码中。但是,我不明白我们应该什么时候使用?每次我们有关系数据库时我们应该实现这个吗?或者当情况需要我们时?

例如 1:

    Customer customer = new Customer();
    customer.setName("John");

    PhoneNumber ph1 = new PhoneNumber();
    ph1.setNumber("1234567890");
    ph1.setType("cell");

    PhoneNumber ph2 = new PhoneNumber();
    ph2.setNumber("0987654321");
    ph2.setType("home");

    customer.addPhoneNumber(ph1);
    customer.addPhoneNumber(ph2);

    repository.save(customer);

上面是一个客户有很多号码的地方,对于这个用例,一个新客户和多个新号码被创建并保存(在数据库中),这就是我们需要映射的原因。完全理解。

但还有另一个例子——例如 2:

enter image description here

enter image description here

db 中有 2 个表 - 卖家(PK:seller_id)和产品(PK:prod_id,FK:seller_id)。因此,要添加产品,您必须将 Seller_id 作为字段之一。这也是有关系的。但与第一个例子相比,我不需要创建新卖家和多个新产品。我需要先创建新的卖家,然后在任何时候多次添加产品。对于这种情况,我是否也需要进行映射?

编辑:我的问题是,我可以使用本机查询从 1 个卖家那里获取产品列表吗?如果是,那映射的意义何在?

【问题讨论】:

    标签: orm spring-data-jpa


    【解决方案1】:

    是的,它们之间存在@OneToMany 关系,因为一个卖家销售的产品不止一种。根据场景,这可以是单向的或双向的。当您在它们之间进行单向映射时,卖家可以访问他/她销售的所有产品。当您进行双向操作时,您可以访问他/她销售的所有产品以及您可以访问的副产品详细信息。

    【讨论】:

    • 我可以使用本机查询来实现这一点……那为什么我还需要映射呢?
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 2020-04-15
    • 1970-01-01
    • 2012-02-08
    • 2020-04-09
    • 2014-11-19
    相关资源
    最近更新 更多