@OneToMany hibernate关系不在PostgereSQL数据库中设置FK

时间:2016-04-20 18:36:53

标签: database spring hibernate postgresql

我在两个表之间有@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 );
    }

1 个答案:

答案 0 :(得分:0)

因为您指定了@OneToMany( mappedBy = "company"),这意味着User是该关系的所有者。

并且您必须在保持稳定时正确设置关系:In a bidirectional JPA OneToMany/ManyToOne association, what is meant by "the inverse side of the association"?