Primavera Jpa Actualización: No se puede emitir sentencias de manipulación de datos con executeQuery ()

Valentyn Hruzytskyi:

Trato de usar consulta asa para actualizar la tabla en la SQLbase de datos.

Código:

    @Autowired
    private ProducerRepository producerRepository;

    public void update(Producer producer){

        String name = producer.getProducerName();
        long id = producer.getId();

//        producerRepository.save(producer); //this method works well.
        producerRepository.update(name, id); //handle attempt - throws exeption in this string
    }

ProducerRepository:

@Repository
    public interface ProducerRepository extends JpaRepository<Producer, Long>{

        @Query(nativeQuery = true, value = "UPDATE producer SET producer_name = :pName WHERE id = :id")
        Producer update(
                @Param("pName") String pName,
                @Param("id") long id
        );
    }

Todos los parámetros de la producerentidad son correctos y producerRepository.save(producer)funciona bien. (También en la consola namey idcampos - todo bien)

Por lo tanto, puedo guardar produceren la base de datos, pero, cuando intento utilizar update()el método consigo el error.

No se puede emitir sentencias de manipulación de datos con executeQuery ()


PD

consulta SQL en la consola también funciona bien

(UPDATE producer SET producer_name = 'some name' WHERE id = ....)

Cabe señalar que las consultas SQL nativas otra en el trabajo repositorio correctamente. Por lo que los / Hibernate / JDBC ajuste de amortiguación que son correctas.

Alexey Semenyuk:

Uso de anotación @Modifying.

Esto hará que la consulta anotadas, en el método como la consulta de actualización en lugar de una selección.

Desde 2.2.6 Modificación de consultas https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/jpa.repositories.html

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=196475&siteId=1
Recomendado
Clasificación