“不支持 DML 操作”,使用简单的 UPDATE 查询

2022-09-01 06:50:55

我在使用以下 HQL 时遇到错误...Not supported for DML operations

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

可能导致问题的原因是什么?鉴于我在Google中发现的一些结果,这似乎不是一个常见的错误。


答案 1

检查帖子休眠 hql 错误:休眠用户论坛中不支持 DML 操作。

最有可能的是您致电

querySt.list();

用于查询。相反,您应该致电UPDATE

querySt.executeUpdate();

答案 2

我在注释方面也遇到了同样的问题。在搜索并做了一些技巧之后,我能够解决它。在将 DML 操作与 JPA 结合使用时,您需要验证以下步骤。

  1. 使用注释和所需的方法。@Modifying(org.springframework.data.jpa.repository.Modifying)@Transactional(org.springframework.transaction.annotation.Transactional)

  2. 用作方法的返回类型。void

例如:-

@Modifying
@Query("UPDATE ProcedureDTO o SET o.isSelectedByUser =?1")
@Transactional
public void getListOfProcedureBasedOnSelection(Boolean isSelected);```

推荐