如何正确映射@OneToMany关系在哪里创建实体,在@One关系的@OneToMany一侧,要求从@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的规则。目前,我只能设置给定Agreement时创建Customer的规则,因为AGREEMENT表具有与CUSTOMER表格相对应的列,这可以通过nullable=false条件轻松完成。

最佳答案

JPA没有提供验证方法,但是Hibernate Validator可以:

@NotNull
@Size(min=1)
public Set<Agreement> agreements = new HashSet<>();

然后,您必须通过验证器手动对其进行测试:
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
Validator validator = validatorFactory.getValidator();
validator.validate(customer)

09-05 01:12