我有一个Java类,其中包含一些嵌套类,如下所示:
public class OuterClass{
@PrimaryKey
private String id;
@Persistent
private String name;
// --- blah blah
static class MyNestedClass{
//--- properties declaration
}
}
此类工作正常,基本上只在一个结构(OuterClass)中,我可以存储n个嵌套结构,每个结构都可以用作数据存储表。
用datastore viewer
检查我的ds,我发现现在有了一个名为OuterClass$MyNestedClass
的表,我可以像下面这样在该表上成功运行GQL查询:
//--- note the wrapping quotation marks on the table name
SELECT * FROM "OuterClass$MyNestedClass" where something = '100'
到现在为止一切正常。现在,我需要创建一个google app engine python
方法来清空嵌套的类表。我已经使用其他表/类做到了这一点,但是从来没有使用嵌套类。
这是我的python代码:
import cgi
import datetime
import urllib
import webapp2
from google.appengine.ext import db
class OuterClass$MyNestedClass(db.Model):
name = db.StringProperty()
surname= db.StringProperty()
age = db.StringProperty()
class emptyMyNestedClassHandler(webapp2.RequestHandler):
def get(self):
nestedclass= db.GqlQuery("SELECT __key__ FROM \"OuterClass$MyNestedClass\"")
count = 0
for p in nestedclass:
count += 1
db.delete(nestedclass)
self.response.out.write("Deleted SMyNestedClass Entities: " + str(count))
app = webapp2.WSGIApplication([
('/emptyMyNestedClass', emptyMyNestedClassHandler)
], debug=True)
这是我得到的错误
class OuterClass$MyNestedClass(db.Model):
^
SyntaxError: invalid syntax
我试图将类名称从OuterClass$MyNestedClass
更改为MyNestedClass
,但出现此错误:
KindError: No implementation for kind 'OuterClass$MyNestedClass'
我必须为我的python类分配哪个名称才能使其工作?如何处理$问题?
希望我已经足够清楚了,谢谢
解
在Matt's suggestion之后,我的JAVA类现在如下所示:
public class OuterClass{
@PrimaryKey
private String id;
@Persistent
private String name;
// --- blah blah
@PersistenceCapable( table="NestedClass")
@Embedded
static class NestedClass{
//--- properties declaration
}
}
这是Python代码:
import cgi
import datetime
import urllib
import webapp2
from google.appengine.ext import db
class NestedClass(db.Model):
name = db.StringProperty()
surname = db.StringProperty()
age = db.StringProperty()
class emptyNestedClassHandler(webapp2.RequestHandler):
def get(self):
nestedclass= db.GqlQuery("SELECT __key__ FROM NestedClass")
count = 0
for p in nestedclass:
count += 1
db.delete(nestedclass)
self.response.out.write("Deleted NestedClassEntities: " + str(count))
app = webapp2.WSGIApplication([
('/emptyNestedClass', emptyNestedClassHandler)
], debug=True)
请注意,我必须声明类NestedClass
。
谢谢!
参考方案
看一下JDO annotations的资源。
您可能想要像这样注释您的班级:
public class OuterClass{
@PrimaryKey
private String id;
@Persistent
private String name;
// --- blah blah
@PersistenceCapable( table="NestedClass")
@Embedded
static class NestedClass{
//--- properties declaration
}
}
通过GQL,您应该可以执行以下操作:
SELECT * FROM "OuterClass" where NestedClass.something = '100'
GAE ClassFormatError:不兼容的魔术值4022320623 EFBFBDEF - java我在简化的Eclipse项目中有一个简单的webapp。我的pom.xml包含一些将Google的appengine-maven-plugin添加到构建插件的行。当我运行mvn appengine:devserver时,我最终收到一条错误消息,告诉我无法加载我的课程: [INFO]警告:启动处理程序时出错 [INFO] java.lang.ClassForm…
Java:线程池如何将线程映射到可运行对象 - java试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …
JAVA:字节码和二进制有什么区别? - javajava字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…
Google Drive API访问我自己的帐户 - java我希望在服务器/笔记本电脑上运行一个简单的过程,每天将文件每天上传一次到Google驱动器中。我不想分享此信息,不允许其他用户使用它等。我发现的所有示例似乎都涉及浏览到一个地址以获得用户(我)的许可,然后获取身份验证代码等并继续参考:Java quickstart有没有一种方法/示例可以做到这一点而无需浏览器,每次我只想为自己的帐户获得许可时都获得唯一的身份…
java:继承 - java有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…