外键在一个映射实体中为空

时间:2018-01-31 21:23:40

标签: postgresql jpa orm eclipselink

我想知道为什么当我用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,但PotatoeOnion ID。 我知道当我想从洋葱对象中取出potatoe对象时,持久性查询具有洋葱ID的potatoe的数据库。

为什么看起来如此?是否有可能在洋葱桌上放入土豆ID

Eclipslink 2.5.0 PostgreSQL 9.1

1 个答案:

答案 0 :(得分:0)

看起来这样,只有一个外键,因为你只有一个(双向)关系由Potatoe->洋葱映射控制,所以它用Potatoe表表示,它有一个洋葱的外键。如果你想从洋葱到土豆的另一个外键,那就意味着你要求的关系可以完全独立于Potatoe->洋葱关系。只需删除mappedBy指示符即可轻松完成,这将使Onion-> Potatoe映射完全独立并使用自己的foriegn键。然后,您的模型将具有两个必须保持的单向映射。