update modificar metodo desde datos comando boton actualizar java sql hibernate spring-mvc hql

java - modificar - "No compatible con operaciones DML" con una simple consulta de ACTUALIZACIÓN



modificar datos en java netbeans (4)

Recibo el error Not supported for DML operations cuando uso el siguiente HQL ...

@Query("UPDATE WorkstationEntity w SET w.lastActivity = :timestamp WHERE w.uuid = :uuid") void updateLastActivity(@Param("uuid") String uuid, @Param("timestamp") Timestamp timestamp);

¿Qué podría estar causando el problema? No parece ser un error común dados los pocos resultados que he encontrado en Google.


Asegúrese de que su método de clase de servicio que llama a updateLastActivity tenga la @Transactional(org.springframework.transaction.annotation.Transactional) . y modifique el método del repositorio a continuación,

import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; ... @Modifying @Query("UPDATE WorkstationEntity w SET w.lastActivity = :timestamp WHERE w.uuid = :uuid") void updateLastActivity(@Param("uuid") String uuid, @Param("timestamp") Timestamp timestamp);

Para obtener más información, utiliza esta respuesta .


Me pasó lo mismo porque, siendo q un objeto de la clase Query, q.list () no debe usarse para actualizaciones o eliminaciones, pero q.executeUpdate ()


También estaba teniendo el mismo problema con las anotaciones. Después de buscar y hacer algunos trucos, pude resolverlo. Hay algunos pasos a continuación que debe verificar al usar la operación DML con JPA.

  1. Use la anotación @Modifying (org.springframework.data.jpa.repository.Modifying) y @Transactional (org.springframework.transaction.annotation.Transactional) en el método requerido.

  2. Use void como método de devolución del método.

p.ej:-

@Modifying

@Query ("UPDATE ProcedureDTO o SET o.isSelectedByUser =? 1")

@Transactional

public void getListOfProcedureBasedOnSelection (Boolean isSelected);