![](/img/trans.png)
[英]Is this the correct use of “mappedBy” in a @OneToOne relationship?
[英]mappedBy as the field that owns the relationship
我想我明白了什么属性mappedBy
意味着,如果放在一个@OneToMany
字段(即表示字段的类型表中有一个外键,该表中申报@OneToMany(mappedBy="...")
但我不不能完全理解其语法(或者最终理解其含义->矛盾)。
根据文档 :
的mappedBy
public abstract String mappedBy
拥有关系的字段。
除非关系是单向的,否则为必需。
默认值:“”
文档在谈论哪个领域? mappedby
的值应该匹配什么?在哪个表中匹配?
看看这个例子 。 在此示例中,一对多关系涉及两个类: Stock
和StockDailyRecord
。 注意Stock
类中的@OneToMany
stockDailyRecords
字段:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "stock")
public Set<StockDailyRecord> getStockDailyRecords() {
return this.stockDailyRecords;
}
所以在这种情况下,它说,该领域stock
在StockDailyRecord
类(不要与混淆类Stock
)拥有的关系。 我认为更令人困惑的是,在这种情况下,字段名称和类都相同。 这种情况也是很常见的,因为你会被那场的类名的小写按照惯例(如指对对方关系的名称stock
的Stock
)。
因此, mappedBy
属性实际上归StockDailyRecord
类所有。 因此,这意味着StockDailyRecord
将处理持久stockDailyRecords
在Stock
类中引用的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.