当前位置: 首页 > 知识库问答 >
问题:

springboot-mysql-list错误中的未知列字段

欧阳骏俊
2023-03-14

下面是我的Spring boot Rest API应用程序。

vendor.java

package hello;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity(name="vendor")
public class Vendor {

    @Id
    @Column(name="vendorId")
    private int vendorId;
    @Column(name="vendorName")
    private String vendorName;
    @Column(name="vendorPhone")
    private int vendorPhone;
    @Column(name="vendorBalance")
    private int vendorBalance;
    @Column(name="vendorChequeAmount")
    private int vendorChequeAmount;


    public int getVendorId() {
        return vendorId;
    }
    public void setVendorId(int vendorId) {
        this.vendorId = vendorId;
    }
    public String getVendorName() {
        return vendorName;
    }
    public void setVendorName(String vendorName) {
        this.vendorName = vendorName;
    }
    public int getVendorPhone() {
        return vendorPhone;
    }
    public void setVendorPhone(int vendorPhone) {
        this.vendorPhone = vendorPhone;
    }
    public int getVendorBalance() {
        return vendorBalance;
    }
    public void setVendorBalance(int vendorBalance) {
        this.vendorBalance = vendorBalance;
    }
    public int getVendorChequeAmount() {
        return vendorChequeAmount;
    }
    public void setVendorChequeAmount(int vendorChequeAmount) {
        this.vendorChequeAmount = vendorChequeAmount;
    }

}

vendorRepository.java

package hello;

import org.springframework.data.repository.CrudRepository;

import hello.Vendor;

// This will be AUTO IMPLEMENTED by Spring into a Bean called userRepository
// CRUD refers Create, Read, Update, Delete

public interface VendorRepository extends CrudRepository<Vendor, Integer> {

}
package hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import hello.Vendor;
import hello.VendorRepository;

@Controller    // This means that this class is a Controller
@RequestMapping(path="/demo") // This means URL's start with /demo (after Application path)
public class MainController {
    @Autowired // This means to get the bean called userRepository
               // Which is auto-generated by Spring, we will use it to handle the data
    private VendorRepository vendorRepository;

    @GetMapping(path="/all")
    public @ResponseBody Iterable<Vendor> getAllVendors() {
        // This returns a JSON or XML with the users
        return vendorRepository.findAll();
    }
    @GetMapping(path="/msg")
    public @ResponseBody String getMsg(){
        return "Hi";
    }
}
package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sat Feb 10 14:59:39 GST 2018
There was an unexpected error (type=Internal Server Error, status=500).
could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

server.port=8089
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.type=trace 
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.datasource.url=jdbc:mysql://localhost:3306/web_customer_tracker
spring.datasource.username=springstudent
spring.datasource.password=springstudent

不过,我还是得到了一个错误:

这个错误是什么?如何化解?

共有1个答案

白刚洁
2023-03-14

从错误消息中可以看出,列名在SQL查询中生成错误。我建议在开发时在application.properties中设置spring.jpa.show-sql=true,以便在控制台中查看生成的查询。

该错误很奇怪,因为当您将列vendor_id的名称设置为vendorid时,它会抱怨列vendor_id(btw:werid数据库列命名策略)。稍微研究一下,我遇到了这个问题,根据它的第一个答案,它似乎是某种带有列名的bug。如前所述,请尝试在应用程序中添加此内容。首选项

spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
 类似资料:
  • 问题内容: 尝试执行此更新查询时,我不断收到MySQL错误#1054: 这可能是一些语法错误,但我尝试使用内部联接和其他更改,但始终收到相同的消息: 问题答案: 尝试对“ y”使用不同的引号,因为标识符引号是反引号(“`”)。否则,MySQL会“认为”您指向名为“ y”的列。 另请参见MySQL 5文档

  • 问题内容: 错误:ER_BAD_FIELD_ERROR:“字段列表”中的未知列“ 2525”对于CONVERSATION_ID和FC_CONTACTNAME而言,字段均为varchar(32),对于其他2个字段均为int。 此查询出了什么问题?我什至放回了句号,它认为变量是一列… 编辑: 如果我的查询就是这样,那么它可以工作: 问题答案: 制作 到 最有可能是字符串,数据类型是varchar,因此

  • 基本上,我试图制作一个简单的促销页面,我得到的错误是SQL错误:1054,SQLSTATE:42S22错误是“字段列表”中的未知列“promotion0_.promot_type_id” 下面是模型类 以下是错误,SQL错误:1054,SQLSTATE:42S22,“字段列表”中的未知列“Promotion0_.Promot_Type_ID”错误34768---[nio-8080-exec-3]O

  • 问题内容: 我有一个名为表有三列:,,。 我正在尝试创建一个查询,该查询将根据昵称返回余额,并且在使用此查询时遇到错误: 有人可以在这里看到我做错了吗? 问题答案: 反引号(`)用于标识符,例如表名,列名等。单引号(’)用于字符串文字。 您想做: 或者,更明确地说: 如果没有歧义的可能性,并且表/列名称没有特殊字符或空格,则可以将`设置为off。 这是一些干燥且难以阅读的文档:http : //d

  • 问题内容: 我试图将值添加到phpmyadmin中的表中,但出现错误:“字段列表”中的未知列“ …”。 这是我的代码: 因此,当我在上一页的表单中输入fds作为名称时,我得到:“字段列表”中的未知列“ fds”。这以前从未发生过,我也不知道发生了什么。 问题答案: 我认为这 应该

  • 这是我的xml文件的一个片段: