我正在尝试将数据插入表中。在执行查询后,我收到了一个异常提示
org.postgresql.util.PSQLException: No results were returned by the query.
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:284)
数据已成功插入,但我不知道为什么会出现此异常??
我正在尝试将数据插入表中。在执行查询后,我收到了一个异常提示
org.postgresql.util.PSQLException: No results were returned by the query.
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:284)
数据已成功插入,但我不知道为什么会出现此异常??
使用
executeUpdate
取代
executeQuery
如果不会返回任何数据(即非SELECT
操作)。
请在@Query注释上方使用@Modifying注释。
@Modifying @Query(value = "UPDATE Users set coins_balance = coins_balance + :coinsToAddOrRemove where user_id = :user_id", nativeQuery = true) int updateCoinsBalance(@Param("user_id") Long userId, @Param("coinsToAddOrRemove") Integer coinsToAddOrRemove);
对于任何DML查询(即DELETE,UPDATE或INSERT),都是如此。
使用 @Modifying 和 @Transaction 解决了我的问题
@Modifying
@Query(value = "DELETE FROM table t WHERE t.some_id IN (:someIds)", nativeQuery = true)
List<Long> deleteBySomeIdIn(@Param("someIds") Collection<Long> someIds);
void
解决了这个问题:@Modifying
@Query(value = "DELETE FROM table t WHERE t.some_id IN (:someIds)", nativeQuery = true)
void deleteBySomeIdIn(@Param("someIds") Collection<Long> someIds);
int update = statement.executeUpdate()
ResultSet rs = statement.getGeneratedKeys();
if (rs != null && rs.next()) {
key = rs.getLong(1);
}
addBatch
和executeBatch
来解决这个问题,具体如下:
statement.addBatch("DELETE FROM public.session_event WHERE id = " + entry.getKey());
statement.executeBatch();
execute
代替executeQuery
。