【发布时间】:2019-02-10 12:02:05
【问题描述】:
如何正确映射@OneToMany 关系在哪里创建实体,在@OneToMany 关系的@One 一侧,需要至少有一个来自@Many 一侧的实体,但@Many 一侧的实体也需要实体在@One 一侧存在吗?简单地说,这句话的噩梦,这就是我的场景:
这就是我想要的:
[ENTITY A] 1 <-----> (1..*)[ENTITY B]
目前我有这个:
[ENTITY A] 1 <-----> (0..*)[ENTITY B]
这很容易做到。
@OneToMany(cascade=CascadeType.ALL, mappedBy="customer")
public Set<Agreement> agreements = new HashSet<>();
和
@ManyToOne
@JoinColumn(name = "CUSTOMER_ID", nullable=false)
private Customer customer;
所以问题是我的CUSTOMER 表没有与AGREEMENT 表对应的列,因此我不能执行创建Customer 的规则,只有在给出Agreement 时。目前我只能设置规则以在给出Customer 时创建Agreement,因为AGREEMENT 表有对应于CUSTOMER 表的列,这很容易通过nullable=false 条件完成。
【问题讨论】:
-
我可能在这里误解了一些东西,但是没有外键就无法映射关系。您的 Join 列是如何成为 Customer 的主键?这根本没有意义。
标签: java hibernate jpa orm one-to-many