我在两个表之间有@OneToMany关系 - 公司:
@OneToMany( mappedBy = "company", cascade = CascadeType.ALL )
private List< User > users = new ArrayList<>();
和用户:
@ManyToOne
@JoinColumn( name = "companyId" )
private Company company;
问题是,当我创建一个拥有一个用户的公司时,所有内容都会保存到db中。表company_users是在db中创建的,但公司ID外键未在用户表中设置。它仍然是空的。我也使用spring CruDREpository,但我不认为在这个例子中可能是这种情况。 你能告诉我为什么没有设置这个FK吗?这是一个Postgres问题?我认为这种关系是以良好的方式创造的。
编辑:
public CompanyDto createOrUpdate( final CompanyDto companyDto )
{
Company company = companyModelMapperWrapper.getModelMapper().map( companyDto, Company.class );
Company saved = companyDao.save( company );
if ( companyDao.exists( saved.getId() ) )
{
logger.info( "Company " + saved.getName() + " has been changed" );
}
return companyModelMapperWrapper.getModelMapper().map( saved, CompanyDto.class );
}
答案 0 :(得分:0)
因为您指定了@OneToMany( mappedBy = "company")
,这意味着User
是该关系的所有者。
并且您必须在保持稳定时正确设置关系:In a bidirectional JPA OneToMany/ManyToOne association, what is meant by "the inverse side of the association"?