查询必须以SELECT或FROM开头:delete [删除

问题描述:

我除了弹簧(3.0.0.M4)之外还使用JPA。在使用query.executeUpdate()删除多个记录时,我收到以下异常。查询必须以SELECT或FROM开头:delete [删除

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: org.hibernate.QueryException: query must begin with SELECT or FROM: delete [delete obj com.ocimum.btree.mw.core.objecttypes.profile.entity.ProfileEntity obj] 
     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:648) 
     org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:578) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:716) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 

我正在使用spring Transactional management。

它与entityManager.remove()一起工作,但多重删除正在给出上述执行。 我没有在应用程序中使用任何查询工厂。

这与Spring无关。您的查询语法不正确,并且异常消息告诉您。

DELETE [FROM] com.ocimum.btree.mw.core.objecttypes.profile.entity.ProfileEntity obj WHERE ...

Check here

如果问题仍然存在,可以矫正你查询的语法后,验证你的Hibernate配置: 设置属性hibernate.query.factory_classorg.hibernate.hql.ast.ASTQueryTranslatorFactory在我的情况下工作。

欲了解更多信息,我参考Hibernate forum post我找到了这个解决方案。