首页 > 解决方案 > 使用没有返回类型的 javax.ws.rs api 执行查询

问题描述

我希望执行查询

SET SQL_SAFE_UPDATES = 0 ;

我通常为获取请求做什么

public void setSafeMode() {
        Client client = ClientBuilder.newClient();
        Response response = client.target(URI.contextPathUI + "/api/orderbook/safeMode").request().get();
    }

在后端控制器

@GetMapping("/orderbook/safeMode")
    private void setSafeMode() {
        orderBookRepository.setSafeMode();
    }
@Repository
public interface OrderbookRepository extends JpaRepository<Orderbook, Integer>, JpaSpecificationExecutor {
    @Query(value="SET SQL_SAFE_UPDATES = 0 ; ", nativeQuery = true)
    void setSafeMode();
}

我知道它不应该是一个获取请求,但我们在这个 api 中没有执行方法。我希望运行这个 get 请求并返回一个 void。它给出了一个错误

    "message": "could not execute query; nested exception is org.hibernate.exception.GenericJDBCException: could not execute query"

我想知道如何执行一个不返回任何内容的简单查询,并且我不必传递实体或其他任何内容(不像我必须在 PUT 或 POST 查询中传递),因为它不合逻辑。此查询不需要任何外部输入,只需重建一个表并将其插入另一个表即可。

标签: javaspring-bootjax-rs

解决方案


它通过将 @Modifying 和 @Transactional 注释添加到存储库方法来工作

@Modifying
@Transactional
@Query(value = "SET SQL_SAFE_UPDATES = 0;", nativeQuery = true)
void setSafeMode();**strong text**

了解更多信息的重要链接

我们在 Spring 中是否需要 @Transaction 和 @Modifying 注解?

为什么我们必须使用 @Modifying 注解在 Data Jpa 中进行查询


推荐阅读