Java 为返回所有数据但排除某些列的本机查询重用实体的方法

Java 为返回所有数据但排除某些列的本机查询重用实体的方法,java,mysql,spring-boot,jpa,spring-data-jpa,Java,Mysql,Spring Boot,Jpa,Spring Data Jpa,我有一个实体/表,它被用作存储库的默认返回类型。但当我进行本机查询时,它检索表中的所有数据,但不包括某些列。我遇到一个错误,说应该提供特定的列 这就是错误: java.sql.SQLException: Column 'column4' not found. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.23.jar:8.0

我有一个实体/表,它被用作存储库的默认返回类型。但当我进行本机查询时,它检索表中的所有数据,但不包括某些列。我遇到一个错误,说应该提供特定的列

这就是错误:

java.sql.SQLException: Column 'column4' not found.
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.23.jar:8.0.23]
这是示例存储库:

@Repository
public interface TableRepository extends CrudRepository<TableEntity, Long> {
  @Query(value = "SELECT column1, column2, column3 FROM table", nativeQuery = true)
    List<TableEntity> findAllWithExcludedColumns();
}
我打算不包括第4列,以提高检索表内容(blob数据)的性能


感谢您的帮助。

在实体表中,使用您在查询中选择的属性创建一个构造函数

只需更改查询方法的名称即可。芬德尔。。of findAllWithExcludedColumns()是queryDSL的关键字。因此,删除关键字“findAll”,它就会起作用。

我试图更改方法名称,但仍然不起作用。仍然返回相同的错误:java.sql.SQLException:未找到列'column4'。我试图在实体表中创建构造函数,但仍然返回错误:java.sql.SQLException:未找到列'column4'
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "table")
public class TableEntity {

    @Column(name= "column1")
    private String column1;

    @Column(name= "column2")
    private String column2;

    @Column(name= "column3")
    private String column3;

    @Column(name= "column4")
    private String column4;
}