删除某种类型的所有实体

时间:2015-02-27 01:38:07

标签: 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 个答案:

答案 0 :(得分:1)

如果要删除所有实体,则不需要变量,如此处所述[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?