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

标签 java spring hibernate spring-data-jpa

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

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "alter table user_role add constraint FK5scdquo6f12cpstqai86x4biw foreign key (roles_role_id) references role (role_id)" via JDBC Statement

你知道我做错了什么吗?

我的代码:

用户模型:

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

榜样:

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

最佳答案

连接列的名称应与列名称类似,而不是模型变量名称。在你的情况下你应该使用

joinColumns = @JoinColumn(name = "user_id")

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

不是

joinColumns = @JoinColumn(name = "userId")

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

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

关于java - 如何在 Spring DATA JPA 中使用 UUID 生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58783482/

相关文章:

java - 如何在 javafx2 中使用 FXML 创建滚动条?

java - Spring data rest findBy securityCheck 用于嵌套实体

java - Urban Airship 推送码

spring - @RequestBody MultiValueMap 不支持内容类型 'application/x-www-form-urlencoded;charset=UTF-8'

java - 从 Java 中的 InputStream 读取 ESRI shapefile

java - 无法通过持久性删除来删除 jpa 子实体

java - Hibernate : object. org.hibernate.MappingException

java - 不区分大小写的比较器破坏了我的 TreeMap

Spring Boot 2.1.5 : Failed to replace {0} with Field Name on Validation Message

java - 如何忽略单元测试中的某些字段,Hibernate