当我尝试执行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开发方面得到了同样的错误。
有很多“无法添加外键约束”帖子,但在我的情况下,它们都没有解决这个问题。
答案 0 :(得分:0)
我找到了问题的原因。这是由于主键,外键的数据类型不匹配。
我创建了'用户'表并使用INT声明其主键。在User类中,我声明了' id'长。 JPA希望通过&BIGINT'获得外键。但它的类型是' INT'其实。这就是为什么,它给了我错误。我将类型更改为BIGINT,现在它可以正常工作。