在用Spring Boot JPA的时候,

    @Query(value = "delete from search_vec where part = ?1 ", nativeQuery = true)
    void dropByPart(int part);

导致异常:

Caused by: java.sql.SQLException: Statement.executeQuery() cannot issue statements that do not produce result sets.

解决方法:
@Query上加上@Modifying,表示不需要返回值

    @Modifying
    @Query(value = "delete from search_vec where part = ?1 ", nativeQuery = true)
    void dropByPart(int part);

这是因为,根据Spring data jpa官网

Doing so triggers the query annotated to the method as an updating query instead of a selecting one.

我猜测@Query对应到底层jdbc框架是Statement.executeQuery(),而@Modifying@Query对应的是Statement.execute();

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐