java - 在 ResultSet Postgres 中找不到创建的列名
问题描述
@Query(value = "UPDATE einvoice_message AS e1 SET message = null FROM (SELECT * FROM einvoice_message
where created < :created ORDER BY :created LIMIT :limit FOR UPDATE SKIP LOCKED) AS e2 WHERE
e1.einvoice_message_id = e2.einvoice_message_id RETURNING e1.einvoice_message_id", nativeQuery = true)
List<EinvoiceMessage> deleteEinvoiceMessageContent(@Param("created") OffsetDateTime created,
@Param("limit") int limit);
我在 postresql 中执行了这个查询,但收到SqlExceptionHelper - The column name created was not found in this ResultSet.
Is that should be e1.created
or e2.created
?但是如果是这样,我不确定为什么,有人可以解释一下这个问题的原因和解决方法吗?
这是提高可读性的查询:
UPDATE einvoice_message AS e1
SET message = null
FROM (
SELECT *
FROM einvoice_message
where created < :created
ORDER BY :created LIMIT :limit
FOR UPDATE SKIP LOCKED
) AS e2
WHERE e1.einvoice_message_id = e2.einvoice_message_id
RETURNING e1.einvoice_message_id
奇怪的是,我可以通过查询工具执行这个脚本,一切正常。但是日志中的错误清楚地表明:
SqlExceptionHelper - The column name created was not found in this ResultSet.
计划任务中发生意外错误。org.springframework.dao.InvalidDataAccessResourceUsageException:无法执行查询;
SQL [UPDATE einvoice_message AS e1 SET message = null FROM (SELECT * FROM einvoice_message where created < ?
ORDER BY ? LIMIT ? FOR UPDATE SKIP LOCKED) AS e2 WHERE e1.einvoice_message_id = e2.einvoice_message_id RETURNING e1.einvoice_message_id];
nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
我的表 ddl:
create table einvoice_message
(
einvoice_message_id bigserial not null
constraint einvoice_message_pk
primary key,
message bytea not null,
created timestamp default now() not null
);
解决方案
推荐阅读
- arrays - 在另一个数组 SWIFT 4 中循环遍历数组和分组连续数字的最佳方法?
- r - 安装失败:似乎不是 R 包(没有说明
- .net - 使用 DataReceivedHandler 打开一个 VB 窗体
- laravel - Laravel Nova:使用 Passport 进行身份验证
- firebase - Firestore 规则路径不起作用
- xamarin - Cosmos DB - 无法从 Xamarin 中检索
- javascript - 办公室未定义
- c# - 使用(LINQ to XML)从 XML 填充 C# 动态 TreeView
- python - 比较两个元组列表字典以计算 F 分数
- css - 角度动画:向模板触发器添加参数