PostgreSQL中的Query错误没有返回任何结果

Rag*_* Kr 28 java database postgresql jsp sql-insert

我试图将数据插入表中.执行查询后,我得到一个异常说明

org.postgresql.util.PSQLException: No results were returned by the query.
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:284)
Run Code Online (Sandbox Code Playgroud)

数据插入成功,但我不知道为什么我得到这个例外?

Pau*_*per 73

使用

executeUpdate
Run Code Online (Sandbox Code Playgroud)

代替

executeQuery
Run Code Online (Sandbox Code Playgroud)

如果没有数据将被返回(即非SELECT操作).


小智 19

请在@Query注释上使用@Modifying注释。

@修改
@Query(value = "UPDATE 用户设置coins_balance =coin_balance + :coinsToAddOrRemove where user_id = :user_id", nativeQuery = true)
    int updateCoinsBalance(@Param("user_id") Long userId, @Param("coinsToAddOrRemove") 整数coinsToAddOrRemove); 

任何 DML 查询(即 DELETE、UPDATE 或 INSERT)也是如此


Sha*_*asi 7

使用 @Modifying 和 @Transaction 修复了我

  • 它的@Transactional (2认同)

Joh*_*Eye 7

让我想到这个问题的问题有点不同 - 我在使用基于接口的 Spring JPA 存储库删除行时遇到此错误。原因是我的方法签名应该返回一些结果:

@Modifying
@Query(value = "DELETE FROM table t WHERE t.some_id IN (:someIds)", nativeQuery = true)
List<Long> deleteBySomeIdIn(@Param("someIds") Collection<Long> someIds);
Run Code Online (Sandbox Code Playgroud)

更改返回类型以void解决问题:

@Modifying
@Query(value = "DELETE FROM table t WHERE t.some_id IN (:someIds)", nativeQuery = true)
void deleteBySomeIdIn(@Param("someIds") Collection<Long> someIds);
Run Code Online (Sandbox Code Playgroud)