Мне нужен API для удаления дизайна, но я получил ошибку. Я до сих пор не понимаю, где было не так. Репозиторий:
public interface ProductRepository extends JpaRepository<Product, Integer> {
@Modifying
@Query(nativeQuery=true, value = "delete from product where productid = ?1")
void deleteProductByProductID(int productID);
}
Контроллер:
@DeleteMapping(path = "/delete/{id}")
public @ResponseBody
void deleteProduct(@PathVariable("id")int productID) {
productRepository.deleteProductByProductID(productID);
}
Ошибка теста API:
{
"timestamp": "2018-04-08T08:46:15.639+0000",
"status": 500,
"error": "Internal Server Error",
"message": "could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet",
"path": "/v1/product/delete/30"
}
Ошибка IDE:
2018-04-08 01:36:26.890 WARN 13629 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: S1009 2018-04-08 01:36:26.890 ERROR 13629 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : Can not issue data manipulation statements with executeQuery(). 2018-04-08 01:36:26.906 ERROR 13629 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet] with root cause
Они такие же, я знал это и пытался использовать, но у меня такие же проблемы.
Вам необходимо добавить @Modifying в свой метод, поскольку в настоящее время он пытается выполнить обновление с использованием неправильного API. Однако deleteById уже знает лучше, поэтому я сомневаюсь, что вы получаете точно такое же исключение.
Извините, я ошибся при копировании и вставке моего фрагмента кода, я пропустил @Modifying.
JpaRepositoryуже имеет методdeleteById. Почему вы чувствуете, что вам нужен еще один?