如何在Spring DATA JPA中使用UUID Generator?

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

  

org.hibernate.tool.schema.spi.CommandacceptanceException:错误   执行“ DDL”更改表user_role添加约束   FK5scdquo6f12cpstqai86x4biw外键(roles_role_id)参考   角色(role_id)”通过JDBC语句

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

我的代码:

用户模型:

bsoncxx::value

角色模型:

@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
}

用户DAO:

@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 > {
}
MAODAN2536 回答:如何在Spring DATA JPA中使用UUID Generator?

您的联接列应具有与列名称相似的名称,而不是模型变量名称。在您的情况下,您应该使用

joinColumns = @JoinColumn(name = "user_id")

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

joinColumns = @JoinColumn(name = "userId")

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

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

本文链接:https://www.f2er.com/3131295.html

大家都在问