java - 删除特定类型的所有实体

标签 java google-app-engine jpql

我正在尝试从 GAE 应用程序内的数据存储中删除特定类型的所有实体。我有以下行:

em.createQuery("DELETE m FROM "+UpdateMessage.class.getSimpleName()+" m").executeUpdate();  

我看到以下异常:

 Unable to update most recent message in datatstore: Candidate class could not be found: DELETE 

我假设我没有正确使用别名,因为它将 DELETE 误认为是实际的类。我尝试在没有别名的情况下执行 DELETE FROM MyClassType ,但这似乎不起作用。

有什么想法吗?

最佳答案

如果您想删除所有实体,则不需要变量,如此处所述 [1]。

此外,您正在使用 getSimpleName() 方法,我对 JPA 了解甚少,但我见过的所有代码片段都使用 getName() 方法。请参阅此处的差异 [2]。因此,查询将是:

em.createQuery("DELETE FROM " + UpdateMessage.class.getName()).executeUpdate();  

[1] http://www.objectdb.com/java/jpa/query/jpql/delete

[2] What is the difference between canonical name, simple name and class name in Java Class?

关于java - 删除特定类型的所有实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28756079/

相关文章:

java - Hibernate 抛出的 MultipleBagFetchException

postgresql - JPQL 获得列与现在之间的天数差异

java - 如何将 UriComponentsBuilder 转换为 java.net.URI

java - 从 jsp 设置 Struts2 Action 成员

java - Android的OCR应用程序

google-app-engine - 如何使用 appcfg.py 将重复属性上传到 ndb 数据存储区

java - 我可以使用 Java Spark Framework 创建常规 War 以在 Tomcat 中部署吗

android - GoogleJsonResponseException : 404 Not Found using google apps endpoint engine backend

android - 使用 Google Cloud/Android Mobile Backend Starter 上的 Kind Name 访问范围

java - 从 JPA 嵌套的 OneToMany 关系中获取单个元素