首页 > 解决方案 > 运行 SpringBoot 应用程序时出现 Column Id not Found 错误?

问题描述

我正在尝试根据 photoId 获取图像路径,但由于找不到 id 而出现错误

我的实体类:

 @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="pid")
    private int pid;
    @Column(name="imagepath")
    private String imagepath;
    @Column(name="photoid")
    private int  photoid;

和存储库

 @Query(value = "SELECT c.imagepath FROM photos AS c WHERE c.photoid = :photoid", 
                   nativeQuery = true)
            List<PhotoModels> getImagePath(int photoid);

堆栈跟踪:-

Hibernate: 
    SELECT
        c.imagepath 
    FROM
        photos c 
    WHERE
        c.photoid = ?
2020-07-08 15:08:48.954  WARN 16424 --- [nio-8990-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: S0022
2020-07-08 15:08:48.954 ERROR 16424 --- [nio-8990-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : Column 'pid' not found.
2020-07-08 15:08:48.956 ERROR 16424 --- [nio-8990-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [SELECT c.imagepath FROM photos c WHERE c.photoid = ?]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query] with root cause

java.sql.SQLException: Column 'pid' not found.

标签: mysqlspringspring-bootjpajpql

解决方案


请参阅以下内容。

  1. 请验证您对@Id 的导入声明。可能是错误的导入

  2. 验证表中是否存在列。

  3. 请更正您的 SQL 查询,因为 JPA 不允许您在本机查询中选择特定列并将它们直接绑定到实体。选择所有或将特定列绑定到 DTO 对象或处理查询结果,然后将结果绑定到实体对象或使用 JPQL 新构造函数方法从将直接映射到实体的本机查询中获取特定列。


推荐阅读