春季数据JPA "Cannot add foreign key constraint"



当我尝试执行我的 Spring 引导项目时,我在标题上收到错误消息。我知道这是一个MySQL错误,但我不想处理创建和更改MySQL开发的表。这是我的项目中执行的 MySQL 命令:

alter table password_reset_token add constraint FK5lwtbncug84d4ero33v3cfxvl foreign key (user_id) references user (id);

我有用户类和表;

@Entity
@Table(name="USER")
public class User{
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Long id;
  private String email;
  //Getters and Setters
}

我有一个实体;

@Entity
public class PasswordResetToken{
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Long id;
  private String token;
  private User user;
  @OneToOne
  @JoinColumn(name="user_id")
  public User getUser(){
    return user;
  }
  //And other Getters and Setters
}

我哪里做错了?当我查看自动生成的表(password_reset_token(时,我没有看到任何外键,当我运行命令时,我在MySQL开发端收到相同的错误。

有许多"无法添加外键约束"的帖子,但在我的情况下,它们都没有解决这个问题。

我找到了问题的原因。这是由于主键、外键的数据类型不匹配。

我创建了"用户"表并使用 INT 声明了其主键。在 User 类中,我声明了 'id' Long。JPA 希望使用"BIGINT"获取外键,但其类型实际上是"INT"。这就是为什么,它给了我错误。我将类型更改为 BIGINT,现在它可以工作了。

最新更新