@OneToMany不插入外键在休眠+ JPA

问题描述:

我面临一些奇怪的问题,我有一个用户表(使用类)和国家表(*)。一个用户可能有N个国家。因此,我用getter和setter方法在用户类中添加了一个国家列表。在表中,我已将country_id作为用户表中的外键。而且,我在用户类上有一个@OneToMany。@OneToMany不插入外键在休眠+ JPA

现在,当我试图坚持一个国家集合的用户类,我看到这些国家永远不会被插入:(我设置两个国家和插入一个用户,所以我应该能够看到2个用户行不同的国家,但我只看到一个。

我只是不解。难道我做错了什么吗?

我想你已经混合所有东西

  1. 每个用户可能有0 .. *国家,但是那是“每个国家只能由1个用户拥有“? 它对我来说似乎不合理。因此我认为它应该是@ManyToMany而不是@OneToMany

  2. “在表中,我已将country_id作为用户表中的外键”。 对于@OneToMany,外键不存储在用户表中。这很容易理解:用户的每条记录可以有1个country_id,它如何表示“ToMany”关系?在表中存储外键是@ManyToOne的默认行为。

  3. 我看到这些国家从未插入”。插入用户时自动插入国家,这与级联设置有关。只需添加合适的级联设置,它应该可以正常工作。 (尽管它没有听起来很合理的对我来说)

建议的方式做的是:

  1. 有无User.countries是@ManyToMany

  2. 拥有一个user_country表,其中有2个FK,分别是user_id和country_id,用于存储用户和国家之间的关系。