gpt4 book ai didi

java - mappedBy 作为拥有关系的字段

转载 作者:行者123 更新时间:2023-11-30 02:57:37 26 4
gpt4 key购买 nike

我想我理解属性 mappedBy 如果放入 @OneToMany 字段中意味着什么(即表示字段类型的表具有该表的外键)声明了 @OneToMany(mappedBy="...") ,但我不完全理解它的语法(或者最后它的含义 -> 矛盾)。

根据documentation :

mappedBy

public abstract String mappedBy

The field that owns the relationship.

Required unless the relationship is unidirectional.

Default: ""

文档讨论的是哪个字段? mappedby 的值应该匹配什么,在哪个表中?

最佳答案

看看这个 example 。此示例中的一对多关系涉及两个类:StockStockDailyRecord。请注意 Stock 类中的 @OneToMany stockDailyRecords 字段:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "stock")
public Set<StockDailyRecord> getStockDailyRecords() {
return this.stockDailyRecords;
}

因此,在这种情况下,它表示 StockDailyRecord 类中的字段 stock(不要与 Stock 类混淆)拥有的关系。我认为更令人困惑的是,在这种情况下,字段的名称和类的名称是相同的。这种情况也很常见,因为您倾向于按照惯例通过该字段的类名的小写字母来引用另一方的关系名称(例如 stock 表示 库存)。

因此,mappedBy 属性实际上属于StockDailyRecord 类。因此,这意味着 StockDailyRecord 将处理持久化 Stock 类中引用的 stockDailyRecords

mappedBy 属性值中引用的名称是类字段名称,而不是表列名称。

这就是该关系的 StockDailyRecord 方面的样子:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "STOCK_ID", nullable = false)
public Stock getStock() {
return this.stock;
}

希望这有帮助,我知道这很令人困惑:)

关于java - mappedBy 作为拥有关系的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36804989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com