首页 > 解决方案 > 我可以从 UPDATE 查询返回自定义对象而不是整数吗?

问题描述

执行 UPDATE 查询它总是返回 INT 受影响的行数。也许有一些方法可以返回例如更新或第一个更新的所有对象的列表?

我有@Entity SecurityPolicy 并希望在更新后恢复该对象。所以这是我的代码:

@Modifying
@Query(value = "UPDATE security_policy s set max_fail_sign_in =:maxFailSignIn," +
        " min_password_length =:minPasswordLength," +
        " capital_in_password =:capitalInPassword," +
        " digit_in_password =:digitInPassword," +
        nativeQuery = true)
SecurityPolicy updateSecurityPolicy(@Param("maxFailSignIn") Integer maxFailSignIn,
                                          @Param("minPasswordLength") Integer minPasswordLength,
                                          @Param("capitalInPassword") Boolean capitalInPassword,
                                          @Param("digitInPassword") Boolean digitInPassword);

使用@Modifying 时,它告诉我结果应该是 Int,没有它 - 无法提取 ResultSet。我知道使用 spring 数据,您可以轻松地保存或更新某些实体并获得它,所以我想要实现类似的东西。

标签: javasqlspring-data

解决方案


不,您不能,因为整数响应不是由框架生成的,而是由 RDBMS 本身(SQL 规范)生成的。该整数表示查询修改了多少行。

由于您不想使用 JPA 来执行此操作,因此您必须SELECT在更新后对该行进行操作,就像使用普通 SQL 一样。


推荐阅读