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

我正在开发一个简单的 Java Spring Boot 应用程序,想要更改不同对象的“等级”。数据库功能齐全,我可以毫无问题地从中读取数据。但是,当使用 Spring Data JPA 并对对象使用 save() 函数时,但仅当我更改对象的字段时,我才会收到 java.sql.SQLSyntaxErrorException。


我试过重新启动 tomcat 服务器、重建数据库、使用不同的字段名称、检索对象的 ID 并仅使用不同的字段值重新创建对象,以及一般的随机编辑。


Animal.java


package 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 + "]";

    }



}


幕布斯6054654
浏览 126回答 1
1回答

慕村225694

好吧,这个问题是因为你使用的是 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;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java