我想知道为什么当我用mappedBy
映射两个实体时,在目标类中我有ID
我的成员类,但在我的成员类中我没有目标类ID
。
示例代码:
//class Onion
@OneToOne(mappedBy = "onion", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Potatoe potatoe;
//class Potatoe
@OneToOne(cascade = CascadeType.ALL)
private Onion onion;
一切正常,我有双向关系。数据库中的但我注意到,Onion
类没有Potatoe
的ID,但Potatoe
有Onion
ID
。
我知道当我想从洋葱对象中取出potatoe对象时,持久性查询具有洋葱ID的potatoe的数据库。
为什么看起来如此?是否有可能在洋葱桌上放入土豆ID
?
Eclipslink 2.5.0 PostgreSQL 9.1
答案 0 :(得分:0)
看起来这样,只有一个外键,因为你只有一个(双向)关系由Potatoe->洋葱映射控制,所以它用Potatoe表表示,它有一个洋葱的外键。如果你想从洋葱到土豆的另一个外键,那就意味着你要求的关系可以完全独立于Potatoe->洋葱关系。只需删除mappedBy指示符即可轻松完成,这将使Onion-> Potatoe映射完全独立并使用自己的foriegn键。然后,您的模型将具有两个必须保持的单向映射。