GAE 数据存储:尝试使用 python/NDB 读取写入 Java/objectify 的数据时出现运行时错误
GAE datastore: RuntimeError when attempting to use python/NDB to read data written in Java/objectify
我正在使用应用引擎和数据存储。我有两个共享相同数据的 GAE 模块。一个模块在 Java 运行时 运行 并利用 objectify 来 write 数据。另一个在 Python 运行时上运行,并使用 NDB 获取数据 read.
我的其中一个包含嵌入实体的列表。当我尝试从此类(Python 模块)中获取实体时,出现以下错误:
RuntimeError: StructuredProperty memberOf expected to find properties separated by periods at a depth of 1; received ['memberOf']
下面是 Java/objectify 映射的样子:
@Entity
public class Person {
@Id
private String id;
@Unindex
private Set<TeamMembership> memberOf = new HashSet<>();
public static class TeamMembership {
private DateTime joinedOn;
private Ref<Team> team;
private TeamMembership() {
}
}
}
这是相应的 Python NDB 映射:
class Person(ndb.Model):
memberOf = ndb.StructuredProperty(TeamMembership, indexed=False, repeated=True)
class TeamMembership(ndb.Model):
joinedOn = ndb.DateTimeProperty(indexed=False)
team = ndb.KeyProperty(kind='Team', indexed=False, repeated=False)
尝试LocalStructuredProperty
。 NDB 支持两种结构化数据的方式; LocalStructuredProperty
对应于 java 原生 EmbeddedEntity
结构并且运行良好。
StructuredProperty
格式是一种复杂的野兽,Objectify 在 v4.1 中弃用并在 v5 中完全放弃。
我正在使用应用引擎和数据存储。我有两个共享相同数据的 GAE 模块。一个模块在 Java 运行时 运行 并利用 objectify 来 write 数据。另一个在 Python 运行时上运行,并使用 NDB 获取数据 read.
我的其中一个包含嵌入实体的列表。当我尝试从此类(Python 模块)中获取实体时,出现以下错误:
RuntimeError: StructuredProperty memberOf expected to find properties separated by periods at a depth of 1; received ['memberOf']
下面是 Java/objectify 映射的样子:
@Entity
public class Person {
@Id
private String id;
@Unindex
private Set<TeamMembership> memberOf = new HashSet<>();
public static class TeamMembership {
private DateTime joinedOn;
private Ref<Team> team;
private TeamMembership() {
}
}
}
这是相应的 Python NDB 映射:
class Person(ndb.Model):
memberOf = ndb.StructuredProperty(TeamMembership, indexed=False, repeated=True)
class TeamMembership(ndb.Model):
joinedOn = ndb.DateTimeProperty(indexed=False)
team = ndb.KeyProperty(kind='Team', indexed=False, repeated=False)
尝试LocalStructuredProperty
。 NDB 支持两种结构化数据的方式; LocalStructuredProperty
对应于 java 原生 EmbeddedEntity
结构并且运行良好。
StructuredProperty
格式是一种复杂的野兽,Objectify 在 v4.1 中弃用并在 v5 中完全放弃。