我在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_id
和admins_id
。
但是,如果我将其添加到User
:
@ManyToMany(mappedBy="admins")
private Set<Game> adminForGames = new HashSet<Game>();
连接表突然有三列,其中一列是adminForGames_id
。我不需要或不需要它,因为我指定mappedBy
,所以我认为不应该生成它。我做错了什么?
答案 0 :(得分:0)
我相信您需要设置反向连接属性
@ManyToMany
@JoinTable(name="Game_admins", joinColumns = {
@JoinColumn(name="admins_id")
},
inverseJoinColumns = {
@JoinColumn(name="Game_id")
}
private Set<User> admins = new HashSet<User>();