我正在开发一个简单的 Java Spring Boot 应用程序,想要更改不同对象的“等级”。数据库功能齐全,我可以毫无问题地从中读取数据。但是,当使用 Spring Data JPA 并对对象使用 save() 函数时,但仅当我更改对象的字段时,我才会收到 java.sql.SQLSyntaxErrorException。我试过重新启动 tomcat 服务器、重建数据库、使用不同的字段名称、检索对象的 ID 并仅使用不同的字段值重新创建对象,以及一般的随机编辑。Animal.javapackage com.derek.awwmash.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="animal")public class Animal { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="id") private int id; @Column(name="rank") private int rank; @Column(name="image") private String image; public Animal() { } public Animal(int id, int rank, String image) { this.id = id; this.rank = rank; this.image = image; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getRank() { return rank; } public void setRank(int rank) { this.rank = rank; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } @Override public String toString() { return "Animal [id=" + id + ", rank=" + rank + ", image=" + image + "]"; }}
1 回答
慕村225694
TA贡献1880条经验 获得超4个赞
好吧,这个问题是因为你使用的是 Mysql 保留字,因为 8.0.2 版本像 isrank
字段。
你可以看看SQL reserved words for Mysql你有两个选择
将列重命名
rank
为rank_img
所需的列名或列名。@Column(name = "rank_img") private int rank;
强制使用
rank
列名。如果你使用的是 JPA,你可以用双引号转义:
@Column(name = "\"rank\"") private int rank;
如果您使用的是 Hibernate 本机 API,则可以使用反引号对它们进行转义:
@Column(name = "`rank`") private int rank;
添加回答
举报
0/150
提交
取消