开发者

3-column join table generated for simple ManyToMany relationship

I'm using these entities with 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;

    ...

Thus far everything works well. Hibernate generates a join table called Game_admins with two colums, Game_id and admins_id.

How开发者_开发百科ever, if I add this to User:

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

The join table suddenly gets three columns, one of which is adminForGames_id. I don't need or want that, and I don't think it should be generated since I specify mappedBy. What am I doing wrong?


I believe you need to set the inverseJoin attriubtes

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜