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

时间:2009-11-19 10:43:55

标签: java jpa

除春天(3.0.0.M4)外,我正在使用JPA。使用query.executeUpdate()删除多个记录时,我收到以下异常。

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管理。

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

3 个答案:

答案 0 :(得分:2)

如果在更正查询语法后问题仍然存在,请验证您的Hibernate配置: 将属性hibernate.query.factory_class设置为org.hibernate.hql.ast.ASTQueryTranslatorFactory就像我的情况一样。

有关详细信息,请参阅我找到此解决方案的Hibernate forum post

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

Check here