我试图更新数据库中的记录,我得到这个错误org.springframework.orm.hibernate4.HibernateQueryException:不支持DML操作[更新]
org.springframework.orm.hibernate4.HibernateQueryException: Not supported for DML operations [UPDATE com.xxx.models.User u set u.notifiable = true WHERE u.emailAccess = :emailAccess AND u.isAdmin = false]; nested exception is org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [UPDATE com.xxx.models.User u set u.notifiable = true WHERE u.emailAccess = :emailAccess AND u.isAdmin = false]
这是我的HQL尝试
@Modifying
public User updateUser(String emailAccess) {
String hql = "UPDATE User u set u.notifiable = true WHERE u.emailAccess = :emailAccess AND u.isAdmin = false";
return (User) _sessionFactory.getCurrentSession().createQuery(hql).setParameter("emailAccess", emailAccess).list();
}
经过研究,我在方法的顶部添加了@Modifying注释,但错误仍然存在。请问有什么可能是错的?
在你的return语句中我看到** .list()**并且你只返回一个用户。这是对的吗? – duardito
使用'executeUpdate()'而不是'list' 同一问题在这里: http://stackoverflow.com/questions/17622147/not-supported-for-dml-operations-with-simple-update-query – seiya