我有 2 个类:User
、Role
角色
定义为:
@Entity
@Table(name="Role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="RoleId")
private long id;
....
}
用户
定义为:
@Entity
@Table(name="User")
public class User implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="UserId")
private long id;
@ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinTable(name = "User_Role",
joinColumns = @JoinColumn(name = "Id"),
inverseJoinColumns = @JoinColumn(name = "Id"))
private Set<Role> roles;
.....
}
显然有两个 ID 名称相似的列会导致抛出以下错误:
Repeated column in mapping for collection: com.myproject.security.model.User.roles column: id
我该如何解决这个问题?当我将列重命名为 RoleId
和 UserId
时,没有错误。
最佳答案
joinColumns 和 inverseJoinColumns 将是表 User_Role 中的列,同一个表中不能有两个同名的列
关于java - id 具有相同列名的对象的 ManyToMany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43996851/