如何使用 hibernate +Spring 编写更新查询
How to write update query using hibernate +Spring
不支持 DML 操作
List<LeadsRequest> updateEngg = getEntityManager().createQuery("UPDATE LeadsRequest l set l.status = :status where l.id = :id")
.setParameter("status", status).setParameter("id",id).getResultList();
java.lang.IllegalStateException:
org.hibernate.hql.internal.QueryExecutionRequestException:
Not supported for DML operations
正如 M.Denium 在他的评论中所写,您必须调用 executeUpdate()
而不是 getResultList()
int numberOfChangedEntities = getEntityManager()
.createQuery("UPDATE LeadsRequest l set l.status = :status where l.id = :id")
.setParameter("status", status)
.setParameter("id",id)
.executeUpdate();
executeUpate()
returns 更改的实体数。
正如 java 文档中针对 Query.getResultList
明确指出的那样,这仅适用于 SELECT
语句。它将 return 给定 select 查询的结果,因此不适用于 INSERT
/UPDATE
/DELETE
查询。
对于 INSERT
/UPDATE
/DELETE
使用 Query.executeUpdate
方法。这将 运行 DML 语句和 return 受影响的行数。
不支持 DML 操作
List<LeadsRequest> updateEngg = getEntityManager().createQuery("UPDATE LeadsRequest l set l.status = :status where l.id = :id")
.setParameter("status", status).setParameter("id",id).getResultList();
java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations
正如 M.Denium 在他的评论中所写,您必须调用 executeUpdate()
而不是 getResultList()
int numberOfChangedEntities = getEntityManager()
.createQuery("UPDATE LeadsRequest l set l.status = :status where l.id = :id")
.setParameter("status", status)
.setParameter("id",id)
.executeUpdate();
executeUpate()
returns 更改的实体数。
正如 java 文档中针对 Query.getResultList
明确指出的那样,这仅适用于 SELECT
语句。它将 return 给定 select 查询的结果,因此不适用于 INSERT
/UPDATE
/DELETE
查询。
对于 INSERT
/UPDATE
/DELETE
使用 Query.executeUpdate
方法。这将 运行 DML 语句和 return 受影响的行数。