我想我理解了mappedBy
属性在放入@OneToMany
字段时的含义(即表示字段类型的表具有声明@OneToMany(mappedBy="...")
的此表的外键,但我不完全理解它的语法(或者最后它的意思 - >矛盾)。
的mappedBy
public abstract String mappedBy
拥有这种关系的领域。
除非关系是单向的,否则必需。
默认:""
文档在谈论哪个字段? mappedby
的值应该匹配什么,以及在哪个表中?
答案 0 :(得分:2)
查看此example。在此示例中,一对多关系涉及两个类:Stock
和StockDailyRecord
。请注意课程@OneToMany
中的stockDailyRecords
Stock
字段:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "stock")
public Set<StockDailyRecord> getStockDailyRecords() {
return this.stockDailyRecords;
}
所以在这种情况下,它说stock
类中的字段StockDailyRecord
(不要与类Stock
混淆)拥有这种关系。我认为这更令人困惑的是,在这种情况下,字段的名称和类都是相同的。这种情况也很常见,因为您倾向于按惯例通过该字段的类名称的小写来引用另一侧的关系名称(例如stock
表示Stock
) 。
所以mappedBy
属性实际上归StockDailyRecord
类所有。这意味着StockDailyRecord
将处理stockDailyRecords
类中引用的Stock
的持久性。
mappedBy
属性值中引用的名称是类字段名称,而不是表列名称。
这就是该关系的StockDailyRecord
方面的看法:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "STOCK_ID", nullable = false)
public Stock getStock() {
return this.stock;
}
希望这会有所帮助,我知道它令人困惑:)