Java JPQL何处在数组查询
我试图更新arraylist中id为的每条记录,但出现以下错误:Java JPQL何处在数组查询,java,hibernate,playframework,jpql,Java,Hibernate,Playframework,Jpql,我试图更新arraylist中id为的每条记录,但出现以下错误: IllegalStateException occured : org.hibernate.hql.QueryExecutionRequestException: Not supported for DML operations [update models.UserOnline uo SET currentRoom_id = :roomid where uo.id IN (:list)] 这就是我正在尝试的: Quer
IllegalStateException occured : org.hibernate.hql.QueryExecutionRequestException: Not supported for DML operations [update models.UserOnline uo SET currentRoom_id = :roomid where uo.id IN (:list)]
这就是我正在尝试的:
Query update_query = JPA.em().createQuery("update UserOnline uo SET currentRoom_id = :roomid where uo.id IN (:list)");
update_query.setParameter("roomid", null);
update_query.setParameter("list", idlist);
List<UserOnline> actual = update_query.getResultList();
Query update\u Query=JPA.em().createQuery(“update UserOnline uo SET currentRoom\u id=:roomid where uo.id IN(:list)”;
更新_query.setParameter(“roomid”,null);
更新_query.setParameter(“list”,idlist);
List actual=update_query.getResultList();
有什么问题吗?我会尝试使用
update\u query.executeUpdate()代码>
从.就像Gonzalo已经说过的,您必须使用执行更新
这是,因为您实际上正在修改数据
如果要从数据库中获取数据,则只能使用getResultList()或getSingleResult()
小帮手:
如果您的查询具有以下表单,请使用executeUpdate()
UPDATE ... SET .. WHERE ..
or
DELETE ... WHERE ...
如果查询如下所示,请使用getResultList()或getSingleResult()
SELECT ... FROM xxx WHERE ...
or just
FROM xxx WHERE ...
如果我们使用Spring存储库(Crudepository或其任何类型),如果我们有一个带有更新查询的方法声明
就是
@查询(“更新员工e集e.name=:name,其中e.id=:id”)
int updateEmployee(@Param(“name”)字符串名称,@Param(“id”)长id)
然后我们将获得相关的Spring异常org.springframework.dao.InvalidDataAccessApiUsageException:org.hibernate.hql.internal.QueryExecutionRequestException:不支持DML操作
只需在方法上添加@modify注释,就可以了