我收到一个未知的列错误,但我确实有该列?
Posted
技术标签:
【中文标题】我收到一个未知的列错误,但我确实有该列?【英文标题】:I get a unknown column error but I do have the column? 【发布时间】:2021-03-01 10:18:15 【问题描述】:所以我正在用 java 制作我的第一个 RESTful API,但我被卡住了。 我正在使用外键,所以我遇到了 ORM。 我正在学习它,所以我可能不了解所有内容。 无论如何,我收到此错误:
java.sql.SQLSyntaxErrorException: Unknown column 'user0_.account_id' in 'field list'
虽然我认为我确实有那个专栏。
我的数据库(相关部分):
我的用户模型类:
@Entity
@Table(name="user")
@Getter
@Setter
public class User
public User(Integer id)
this.id = id;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private Integer id;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="accountId", referencedColumnName = "Id")
private Account account;
public User()
我的帐户模型类:
@Entity
@Table(name="account")
@Getter
@Setter
public class Account
public Account(Integer id, String firstName, String lastName, String email, String password, Boolean locked, Boolean enabled)
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.password = password;
this.locked = locked;
this.enabled = enabled;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String firstName;
private String lastName;
private String email;
private String password;
private Boolean locked;
private Boolean enabled;
@OneToOne(mappedBy = "account" , cascade = CascadeType.ALL,
fetch = FetchType.LAZY, optional = false)
private User user;
public Account()
我似乎无法在其他类似帖子中找到适合我的答案。 我确实认为这与映射有关,但我不确定。 我认为您只需要这两个课程,但是如果您需要其他任何内容来回答我的问题,请询问他们,我会将它们包含在我的帖子中。
提前致谢!
为了使我的数据库更清晰,我从 IntelliJ 添加了数据库选项卡,以便您可以查看列的命名方式:
【问题讨论】:
【参考方案1】:在你的课堂上看看这个User
:
@JoinColumn(name="accountId", referencedColumnName = "Id")
private Account account;
您必须在这里使用数据库列名,而不是实体字段名。如果该列在数据库中确实被命名为account_id
(从错误消息中似乎就是这种情况),那么应该是:
@JoinColumn(name="account_id", referencedColumnName = "id")
private Account account;
【讨论】:
当我尝试执行此操作时,我在 IntelliJ 中收到一条错误消息:无法解析列 'account_id' 当我键入 accountId 时,我没有收到此错误。旁边有或没有大写的referencedColumnName我给出了同样的错误(刚刚尝试过)。 我在帖子中添加了数据库【参考方案2】:我通过老师的反馈找到了答案。我以错误的方式实现了用户和帐户表。 我需要以这种方式实现它:
当我在我的数据库和我的代码中更改它时:
用户类别:
@Entity
@Table(name="user")
@Getter
@Setter
public class User
public User(Integer id)
this.id = id;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private Integer id;
@OneToOne(mappedBy = "user" , cascade = CascadeType.ALL,
fetch = FetchType.LAZY, optional = false)
private Account account;
public User()
帐户类别:
@Entity
@Table(name="account")
@Getter
@Setter
public class Account
public Account(Integer id, String firstName, String lastName, String email, String password, Boolean locked, Boolean enabled)
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.password = password;
this.locked = locked;
this.enabled = enabled;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String firstName;
private String lastName;
private String email;
private String password;
private Boolean locked;
private Boolean enabled;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="id", referencedColumnName = "id")
private User user;
public Account()
【讨论】:
以上是关于我收到一个未知的列错误,但我确实有该列?的主要内容,如果未能解决你的问题,请参考以下文章
“Parcelable 协议需要一个名为 CREATOR 的 Parcelable.Creator 对象”(我确实有 CREATOR)- 在 Kotlin 中