用主键而不是外键生成的JPA Join表

  • 本文关键字:JPA Join java jpa spring-data-jpa
  • 更新时间 :
  • 英文 :


我在TeamEntityContestTypeEntity之间有一个OneToMany单向关系。

因此,在我的TeamEntity中,我有以下内容:

@OneToMany(targetEntity = ContestTypeEntity.class)
@JoinTable(name="team_contest_type")
private Set<ContestTypeEntity> contestTypes = new HashSet<>();

ContestTypeEntity不知道这种关系。

通常,JPA应该生成一个带有两个外键的联接表team_contest_typeteam_entity_idcontest_types_id

但在实际生成的联接表中,这些都是主键,所以我不能插入非唯一值。。。这就是我想要做的。我该怎么解决这个问题?

使用@JoinColumn而不是@JoinTable。请记住,当使用JPA/Hibernate/ORM时,您使用的是对象引用,而不是表键。这可以帮助您不要将单向与OneToMany一起使用:https://thorben-janssen.com/best-practices-many-one-one-many-associations-mappings/#Don8217t_use_unidirectional_one-多人关联

好的,所以两边都有一个集的ManyToMany关系解决了我的问题。

最新更新