“无法在Spring Data JPA上添加外键约束”

时间:2018-03-23 15:13:31

标签: mysql jpa spring-data-jpa

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

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

我有USER类和表格;

@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开发方面得到了同样的错误。

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

1 个答案:

答案 0 :(得分:0)

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

我创建了'用户'表并使用INT声明其主键。在User类中,我声明了' id'长。 JPA希望通过&BIGINT'获得外键。但它的类型是' INT'其实。这就是为什么,它给了我错误。我将类型更改为BIGINT,现在它可以正常工作。