Sql server @Spring Crudepository中的NamedQuery-SQLServerException:列名无效';id';

Sql server @Spring Crudepository中的NamedQuery-SQLServerException:列名无效';id';,sql-server,spring,hibernate,jpa,spring-data,Sql Server,Spring,Hibernate,Jpa,Spring Data,我正在调用一个服务,该服务在crudepository中使用@NamedQuery返回域对象。我看到了错误 2017-04-05 16:43:16.063 WARN 14240 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 207, SQL State: S0001 2017-04-05 16:43:16.065 ERROR 14240 --- [ main] o.h.

我正在调用一个服务,该服务在crudepository中使用@NamedQuery返回域对象。我看到了错误

2017-04-05 16:43:16.063  WARN 14240 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 207, SQL
State: S0001
2017-04-05 16:43:16.065 ERROR 14240 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : Invalid column name
 'id'.
2017-04-05 16:43:16.076  INFO 14240 --- [           main] utoConfigurationReportLoggingInitializer :

... 27 common frames omitted
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'id'.
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:232) ~[mssql-jd
bc-6.1.0.jre8.jar!/:na]
我不理解此错误,因为我的数据库表中没有列“id”。不知道发生了什么事

我的桌子是空的

CREATE TABLE [dbo].[tb_changes_reports_v2](
    [reportID] [int] NOT NULL,
    [global_checksum] [int] NULL,
    [specific_checksum] [int] NULL,
    [batch] [int] NULL,
    [pushed] [bit] NULL,
    [compare_date] [datetime] NOT NULL,
    [ver] [bigint] NULL
) ON [PRIMARY]

GO
我的@Entity看起来像

@Entity(name = "ChangesReports")
@Table(name="tb_changes_reports_v2")
@NamedQuery(name = "ChangesReports.findByTheReportId", query = "from ChangesReports c where c.reportId = ?1")
public class ChangesReports extends AbstractPersistable<Long> {

    private static final long serialVersionUID = -452961221197917532L;

    @Column(name="reportID", unique = true)
    private Long reportId;

My @Repository looks like

@Repository
public interface ChangesReportsRepository extends CrudRepository<ChangesReports, Long>, ChangesReportsRepositoryCustom {

    ChangesReports findByTheReportId(Long reportId);
@Override
public ChangesReports findByTheReportId(Long reportId) {
    return changesReportsRepository.findByTheReportId(reportId);
}
我正在使用这些@Bean定义来自动连接我的Bean

   @Bean
public ChangesReportsServiceImpl changesReportsServiceImpl() {
        ChangesReportsServiceImpl changesReportsServiceImpl = new ChangesReportsServiceImpl();
        return changesReportsServiceImpl;
    }

    @Bean
    public ChangesReportsRepositoryImpl changesReportsRepository() {
        ChangesReportsRepositoryImpl changesReportsRepositoryImpl = new ChangesReportsRepositoryImpl();
        return changesReportsRepositoryImpl;
    }

同样,我不确定为什么会收到“无效列名'id'。因为没有名为'id'的列。任何想法都非常感谢。

仅供参考,我的答案是修改我的表,使其具有AbstractPersistable接口所需的ID列

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tb_changes_reports_v2](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [reportID] [int] NOT NULL,
    [global_checksum] [int] NULL,
    [specific_checksum] [int] NULL,
    [batch] [int] NULL,
    [pushed] [bit] NULL,
    [compare_date] [datetime] NOT NULL,
    [ver] [bigint] NULL
    PRIMARY KEY CLUSTERED
            (
                [ID] ASC
            )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

抽象持久性呢?该类是否有Id列?不,没有Id列。谢谢-这是一个非常好的提示-我添加了一个id列,问题已经解决。@user619804请将其作为答案发布,以便其他用户可以更轻松地找到它