为简单的ManyToMany关系生成的3列连接表

时间:2011-05-09 22:19:42

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

我在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,所以我认为不应该生成它。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我相信您需要设置反向连接属性

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