2

考虑以下 Python 中的应用引擎模型。

class Account(ndb.Model):
  email = ndb.StringProperty()
  nickname = ndb.StringProperty()
  phone = ndb.IntegerProperty()
  date = ndb.DateTimeProperty(auto_now_add=True)

class Invitation(ndb.Model):
  sender = ndb.StructuredProperty(Account, required=True)
  recipient = ndb.StructuredProperty(Account, required=True)
  message = ndb.StringProperty()
  date = ndb.DateTimeProperty(auto_now_add=True)

  @classmethod
  def get_recipient(cls, sender, date):
    qry = Invitation.query(ndb.AND(Invitation.sender == sender, Invitation.date == date)).fetch(projection=['recipient']))
    return qry

我将如何用 Java 重写上面的代码?请注意,Account 是一个适当的实体/模型——不受 java 的EmbeddedEntity. 另外,如果回复是JDO(请提供代码),谷歌网站有一个警告说(我不明白):

多态查询。您不能通过查询类来获取子类的实例。每个类都由数据存储区中的一个单独的实体类型表示。

这个警告是否意味着我们可以用 python 做一些我们不能用 app-engine 上的 java 做的事情?

4

1 回答 1

1

我想您要将应用引擎后端转换为 java 的原因是因为 Google Eclipse 插件 (GEP) 可以创建应用引擎连接的设备。如果是这样的话,你在 python 中开发所节省的钱超过了使用 GEP 的好处。

您引用的警告与复合对象无关,这是您的 Account 类对 Invitation 类的作用。

同样,除非你有明确的理由去使用 java(GEP 除外),否则你应该坚持使用 Python。需要处理的多余混乱要少得多。

于 2013-03-25T15:55:45.440 回答