查询必须以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 ...
答
如果问题仍然存在,可以矫正你查询的语法后,验证你的Hibernate配置: 设置属性hibernate.query.factory_class
到org.hibernate.hql.ast.ASTQueryTranslatorFactory
在我的情况下工作。
欲了解更多信息,我参考Hibernate forum post我找到了这个解决方案。