Cum se rezolvă excepția „Nici un rezultat nu a fost returnat de interogare” în Postgres în timp ce se utilizează JPA [duplicat] (Programare, Java, Postgresql, Jpa, Date De Primăvară Jpa)

krishna a intrebat.

Bună ziua, construiesc un serviciu de odihnă pentru a șterge o entitate din PostgreSQL folosind JPA.Și codul este:

@Repository
public interface TestRepo  extends JpaRepository<Question, Long>{
    @Query(value = "delete from testmodel c where c.id in ?1 and c.name=?2",
            nativeQuery = true)
    void deleteModel(List<Long> ids, String text);
}

Codul funcționează bine, intrările au fost șterse din PostgreSQL, dar primesc următoarea excepție în terminal.

org.postgresql.util.PSQLException: No results were returned by the query.
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:107) ~[postgresql-42.2.5.jar:42.2.5]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) ~[HikariCP-3.2.0.jar:na]

Când am căutat această excepție, am primit o sugestie de a utiliza executeUpdate în loc de executeQuery.

Deoarece folosesc JPA, nu știu cum să înlocuiesc executeQuery cu executeUpdate.

Orice ajutor ar fi binevenit.

Comentarii

  • Încercați să adăugați un @Modifying adnotare . –  > Por Arnaud.
2 răspunsuri
Elgayed

Trebuie să adăugați @Modifying pentru a declara că este o interogare de actualizare și că nu așteptați un rezultat înapoi de la BD

@Repository
public interface TestRepo  extends JpaRepository<Question, Long>{
    @Modifying
    @Query(value = "delete from testmodel c where c.id in ?1 and c.name=?2",
            nativeQuery = true)
    void deleteModel(List<Long> ids, String text);
}

Balaji Sankar

Cred că interogările de modificare trebuie să fie adnotate cu un extrause this @Modifying din moment ce modificați interogarea și nu așteptați niciun set de rezultate.