У меня есть приложение appengine с двумя простыми видами сущностей - ParentEntity
s и ChildEntity
s.Каждый ParentEntity
имеет List
принадлежащих ChildEntity
s.
@PersistenceCapable
public class ParentEntity
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private String name;
@Persistent(defaultFetchGroup=true)
private List<ChildEntity> children;
...
С аналогичным образом определенным ChildEntity.
Теперь я хочу загрузить все свои данные из хранилища данных, используятехника, описанная в http://bulkloadersample.appspot.com/.В их примере им удается экспортировать данные в файл XML с собственными сущностями, вложенными в родительские сущности.Но когда я пытаюсь использовать следующую конфигурацию (которая очень похожа на их - см. http://bulkloadersample.appspot.com/showfile/bulkloader_visitactivity.yaml и посмотрите на свойство activities
), я сталкиваюсь с ошибками.
- kind: ParentEntity
connector: simplexml
connector_options:
xpath_to_nodes: /Parents/ParentEntity
style: element_centric
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
- property: children
external_name: Children
import_transform:
transform.list_from_child_node('Children/ChildEntity')
export_transform:
transform.child_node_from_list('ChildEntity')
- kind: ChildEntity
connector: simplexml
connector_options:
xpath_to_nodes: /Children/ChildEntity
style: element_centric
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
Iпоявляется следующая ошибка:
google.appengine.ext.bulkload.bulkloader_errors.ErrorOnTransform: Error on trans
form. Property: children External Name: Children. Code: transform.ch
ild_node_from_list('ChildEntity') Details: 'NoneType' object is not iterable
Большое обновление:
Я создал этот пример приложения, которое вы можете просмотреть, загрузить и протестировать
в
http://rileylark.appspot.com Youможно увидеть вывод I ХОЧУ в http://rileylark.appspot.com/view
Загрузите проект eclipse, чтобы увидеть, как он работает.
То, что я хочу за свои 500 очков, - это рабочая конфигурацияФайл yaml, который может экспортировать данные для Parent и ChildEntities во вложенный XML с помощью appcfg.py download_data