【发布时间】:2015-02-14 05:17:30
【问题描述】:
我正在使用带有 DataNucleus JDO 类型安全查询的 App Engine。是否可以使用 DataNucleus 构建类型安全的祖先查询?例如此应用程序引擎link 的代码将组织称为祖先,Java 中的类型安全查询是什么?
class Organization(db.Model):
name = db.StringProperty()
class Person(db.Model):
given_name = db.StringProperty()
surname = db.StringProperty()
class MainPage(webapp2.RequestHandler):
def post(self):
org = Organization.get_or_insert('ateam', name='ATeam')
person = Person(parent=org)
person.given_name='GI'
person.surname='Joe'
person.put()
q = db.GqlQuery("SELECT * FROM Person WHERE ANCESTOR IS :1 ", org)
people = []
for p in q.run():
people.append({'given_name': p.given_name,
'surname': p.surname})
【问题讨论】:
-
类型安全查询只是生成特定 JDOQL 的一种方式。定义你要使用的JDOQL是什么,然后不使用GAE的人可以从纯JDO的角度来回答。
-
我想构建这个查询,其中 org 引用了有问题引用的代码示例中的祖先:("SELECT * FROM Person WHERE ANCESTOR IS :1", org)
-
那不是 JDOQL。 "SELECT FROM Person WHERE field = :param" 是 JDOQL。
-
这正是我想知道的 DataNucleus 是否支持祖先查询。尽管这是与 Google App Engine Datastore 一起使用的重要信息,但没有关于此的文档。但看起来 DataNucleus 不支持这一点。最好知道是否支持这种类型的查询,即使这意味着它不受类型安全的支持——至少 DataNucleus 应该支持这种祖先查询功能。感谢您的回复。
-
FWIW "DataNucleus" 与 GAE 无关;插件“datanucleus-appengine”是谷歌的。 DataNucleus 是一个单独的项目,它对 GAE 一无所知,只是提供低级的东西。您可以轻松查看他们的问题跟踪器并查看 code.google.com/p/datanucleus-appengine/issues/detail?id=14 这可能是也可能不是这个“祖先”的东西
标签: jdo google-cloud-datastore datanucleus