java - id 具有相同列名的对象的 ManyToMany 关系

标签 java spring

我有 2 个类:UserRole

角色定义为:

@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

我该如何解决这个问题?当我将列重命名为 RoleIdUserId 时,没有错误。

最佳答案

joinColumns 和 inverseJoinColumns 将是表 User_Role 中的列,同一个表中不能有两个同名的列

关于java - id 具有相同列名的对象的 ManyToMany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43996851/

相关文章:

java - 如何防止在tomcat启动时初始化的类对数据库进行双重写入?

java - 使用 Kotlin 的 RSocket retrieveFlux()

java - @Secured 和 @PreAuthorize 在 Controller 中工作正常,但在服务级别中不起作用

java - 编写 Junit 测试以覆盖异常和 catch block

java - eclipse 在哪里保存类路径变量值?

java - 如何将 XML 转换为 java 值对象?

在其他 JAR 中定义时未执行 Spring Aspect

java - 是否有用于 Spring 单元测试的内存/模拟 MySQL 包?

java - 简单的编辑文本?

java - 使用java构建字典