为了账号安全,请及时绑定邮箱和手机立即绑定

在 Spring Boot JPA 中编辑对象值和使用 save() 时出现

在 Spring Boot JPA 中编辑对象值和使用 save() 时出现

幕布斯6054654 2023-05-17 14:33:57
我正在开发一个简单的 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你有两个选择

  1. 将列重命名rankrank_img所需的列名或列名。

    @Column(name = "rank_img")
    private int rank;
  2. 强制使用rank列名。

    如果你使用的是 JPA,你可以用双引号转义:

    @Column(name = "\"rank\"")
    private int rank;

    如果您使用的是 Hibernate 本机 API,则可以使用反引号对它们进行转义:

    @Column(name = "`rank`")
    private int rank;


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信