繁体   English   中英

appedBy作为拥有关系的字段

[英]mappedBy as the field that owns the relationship

我想我明白了什么属性mappedBy意味着,如果放在一个@OneToMany字段(即表示字段的类型表中有一个外键,该表中申报@OneToMany(mappedBy="...")但我不不能完全理解其语法(或者最终理解其含义->矛盾)。

根据文档

的mappedBy

public abstract String mappedBy

拥有关系的字段。

除非关系是单向的,否则为必需。

默认值:“”

文档在谈论哪个领域? mappedby的值应该匹配什么?在哪个表中匹配?

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

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

所以在这种情况下,它说,该领域stockStockDailyRecord类(不要与混淆类Stock )拥有的关系。 我认为更令人困惑的是,在这种情况下,字段名称和类都相同。 这种情况也是很常见的,因为你会被那场的类名的小写按照惯例(如指对对方关系的名称stockStock )。

因此, mappedBy属性实际上归StockDailyRecord类所有。 因此,这意味着StockDailyRecord将处理持久stockDailyRecordsStock类中引用的stockDailyRecords

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

这是该关系的StockDailyRecord端的外观:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM