0

Я использую appengine и datastore. У меня два модуля GAE, которые используют одни и те же данные. Один модуль работает в среде выполнения Java и использует объектные данные для .. Другой работает в среде исполнения Python и использует NDB для данных , читает.GAE datastore: RuntimeError при попытке использовать python/NDB для чтения данных, написанных на Java/objectify

Один из моих видов содержит список вложенных объектов. Когда я пытаюсь извлечь объекты из этого (модуль Python) любезного возникает следующая ошибка:

RuntimeError: StructuredProperty memberOf expected to find properties separated by periods at a depth of 1; received ['memberOf'] 

Вот как Java/объективировать отображение выглядит следующим образом:

@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 ОПРС картографирование:

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) 

ответ

1

Пробег: LocalStructuredProperty. NDB поддерживает два способа структурирования данных; LocalStructuredProperty соответствует структуре java native EmbeddedEntity и работает красиво.

Формат StructuredProperty - сложный зверь, который Objectify устарел в версии 4.1 и полностью оставлен в v5.

+0

Это сработало! Большое спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^