【问题标题】:3-column join table generated for simple ManyToMany relationship为简单的多对多关系生成 3 列连接表
【发布时间】:2011-08-22 00:56:40
【问题描述】:

我将这些实体与 JPA+Hibernate 一起使用:

@Entity
public class Game {

    @Id
    @GeneratedValue
    private long id;

    @ManyToMany
    @JoinTable(name="Game_admins")
    private Set<User> admins = new HashSet<User>();

    ...

@Entity
public class User {

    @Id
    @GeneratedValue
    private long id;

    ...

到目前为止,一切正常。 Hibernate 生成一个名为 Game_admins 的连接表,其中包含两个列,Game_idadmins_id

但是,如果我将此添加到 User:

@ManyToMany(mappedBy="admins")
private Set<Game> adminForGames = new HashSet<Game>();

连接表突然得到三列,其中一列是adminForGames_id。我不需要也不想要那个,而且我认为它不应该生成,因为我指定了mappedBy。我做错了什么?

【问题讨论】:

    标签: java hibernate orm jpa many-to-many


    【解决方案1】:

    我相信你需要设置 inverseJoin 属性

    @ManyToMany
    @JoinTable(name="Game_admins", joinColumns = {
          @JoinColumn(name="admins_id")           
      },
    inverseJoinColumns = {
      @JoinColumn(name="Game_id")
    }
    private Set<User> admins = new HashSet<User>();
    

    【讨论】:

      猜你喜欢
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 2016-02-18
      相关资源
      最近更新 更多