【问题标题】:SqlExceptionHelper - The column name ... was not found in this ResultSetSqlExceptionHelper - 在此 ResultSet 中找不到列名 ...
【发布时间】:2021-03-02 16:19:10
【问题描述】:

这是查询:

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. 不明白为什么以及在哪里?需要帮助。

Java 代码:

@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);

这是我的表 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
);

:created 变量更改为created 列并未解决问题。

【问题讨论】:

  • 我猜你应该添加你正在使用的Java代码。
  • 更新了我的帖子。

标签: java postgresql spring-data-jpa sqlexception


【解决方案1】:

问题在于 this 的返回值。 RETURNING e1.einvoice_message_id 将返回一个数字,而不是我提到的列表。正确答案是:

@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)
int deleteEinvoiceMessageContent(@Param("created") OffsetDateTime created, 
@Param("limit") int limit);

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 2019-10-26
    • 2018-09-23
    • 2021-01-18
    • 2016-01-27
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    相关资源
    最近更新 更多