繁体   English   中英

如何在 Spring DATA JPA 中使用 UUID 生成器?

[英]How to use UUID Generator in Spring DATA JPA?

我想加入两个模型,两者都使用 org.hibernate.id.UUIDGenerator 作为主键。 但是在启动时,我收到以下错误:

org.hibernate.tool.schema.spi.CommandAcceptanceException:通过 Z82269B9B71AB4A7732F695C 语句执行 DDL“更改表 user_role 添加约束 FK5scdquo6f12cpstqai86x4biw 外键 (roles_role_id) 引用角色 (role_id)”时出错

你知道,我做错了什么吗?

我的代码:

用户 Model:

@Entity
@Table
public class User implements Serializable {

    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
    @Column(name = "user_id", columnDefinition = "VARCHAR(255)")
    private String userId;

    @Column(name = "name")
    private String name;

    @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "userId"), inverseJoinColumns = @JoinColumn(name = "roleId"))
    @ManyToMany
    private List<Role> roles;

    public User(){
        this.roles = new ArrayList<>();
    }
// Getter & Setter
}

角色 Model:

@Entity
@Table
public class Role implements Serializable {

    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
    @Column(name = "role_id", columnDefinition = "VARCHAR(255)")
    private String roleId;

    @Column(name = "role_name")
    private String name;

    @Column(name = "description")
    private String description;

    @ManyToMany(mappedBy = "roles")
    private List<User> users;

    public Role(){
        this.users = new ArrayList<>();
    }
// Getter & Setter
}

用户 DAO:

public interface UserDAO extends JpaRepository<User, String > {
}

角色 DAO:

public interface RoleDAO extends JpaRepository<Role, String > {
}

您的连接列的名称应与列名称相似,而不是 model 变量名称。 在您的情况下,您应该使用

joinColumns = @JoinColumn(name = "user_id")

inverseJoinColumns = @JoinColumn(name = "role_id"))

不是

joinColumns = @JoinColumn(name = "userId")

inverseJoinColumns = @JoinColumn(name = "roleId"))

也对所有连接列执行此操作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM