【发布时间】:2018-11-24 08:52:21
【问题描述】:
我正在尝试使用 Springboot 项目对 SQL Server 数据库执行原始 SQL 查询。
我有以下存储库:
public interface BatchRepository extends PagingAndSortingRepository<Transaction, String> {
@Override
@Query(value = "SELECT DISTINCT(T.BatchNumber), T.Operator FROM TABLE T", nativeQuery = true)
Iterable<Transaction> findAll();
}
我支持查询的实体是:
@Entity
@Table(name = "TABLE")
public class Transaction implements EntityId<String>, CreatedDateTime, ModifiedDateTime{
....omitted for brevity
@Id
@GenericGenerator(name = "generator", strategy = "guid")
@GeneratedValue(generator = "generator")
@Column(name = "Id", columnDefinition = "uniqueidentifier")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Column(name = "BatchNumber")
public String getBatchNumber() {
return batchNumber;
}
public void setbatchNumber(String batchNumber) {
this.batchNumber = batchNumber;
}
@Column(name = "Operator")
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
我不断收到错误:
Hibernate:
SELECT
DISTINCT(T.BatchNumber),
T.Operator
FROM
TABLE T
2018-06-14 09:10:06.744 WARN 2844 --- [apr-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: S1093
2018-06-14 09:10:06.744 ERROR 2844 --- [apr-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : **The column name Id is not valid.**
这是表定义。 (注意我已经替换了一些列/表名)
CREATE TABLE [dbo].[Table](
[Id] [uniqueidentifier] NOT NULL,
[BatchNumber] [nvarchar](max) NULL,
[JobType] [nvarchar](max) NULL,
[Operator] [nvarchar](max) NULL,
[TransactionNumber] [int] NULL,
[Status] [nvarchar](100) NULL,
[CreatedOn] [datetime] NOT NULL,
[ModifiedOn] [datetime] NOT NULL,
此外,此查询在 SSMS 和 Intellij 的数据库窗口中执行良好。这不仅仅是查询。
我的查询根本没有引用 Id 字段?
【问题讨论】:
-
如果在这里大写Id会怎样:
public void setId(String id) { this.id = id; } -
没有变化。我认为这不会起作用,因为我在标准 CrudRepository 中使用相同的实体没有问题。这里的变化是我使用原始 sql 来获取投影对象。
-
请在SQL中发布表定义
-
我用表格 def 更新了问题。我不认为这是查询。该查询在 SSMS 中运行良好。 Hibernate ORM 映射有什么特别之处吗?
-
试试
@GenericGenerator(name = "generator", strategy = "uuid2")
标签: sql-server spring-data-jpa