Массовый загрузчик Appengine не загружает свойства списка - PullRequest
2 голосов
/ 01 декабря 2010

Это относится к моему предыдущему вопросу , но с новой информацией.

Я пытаюсь настроить массовый загрузчик для загрузки данных из моего приложения Java appengine таким образомчто список принадлежащих объектов преобразуется во вложенный XML-путь внутри каждого родительского объекта.Я использовал экспортное преобразование transform.child_node_from_list.Однако свойство list никогда не загружается и не передается в это преобразование!

Это похоже на эффект, который вы получаете при просмотре сущности в средстве просмотра хранилища данных appengine - родительская сущность просто не показываетсписок свойств вообще.Вы должны получить к нему доступ через код.

Мой вопрос, таким образом, заключается в следующем: как я могу получить доступ к этому свойству списка с помощью массового загрузчика?Если я загружаю с --kind=ParentEntity, думаете ли вы, что это мешает ему загрузить что-нибудь, что является ChildEntity?(Есть ли способ указать «все виды» или что-нибудь в этом роде?)

В конфигурации загрузки на python модель фактически напрямую указана в файле конфигурации.Нужно ли мне макет модели Python, которая имитирует мою модель JDO, и использовать эту ссылку?

Для справки, сокращенные версии каждого из моих файлов приведены ниже:

downloadconfig.yaml:

transformers:

- kind: ParentEntity
  connector: simplexml
  connector_options:
    xpath_to_nodes: /Parents/Parent
    style: element_centric
  property_map:
    - property: __key__
      external_name: key
      export_transform: transform.key_id_or_name_as_string

    - property: name
      external_name: name
      # Type: String Stats: 30 properties of this type in this kind.

    - property: children
      external_name: Children
      import_transform: 
        transform.list_from_child_node('Children/Child')
      export_transform:
        transform.empty_if_none(transform.child_node_from_list('Child'))

ParentEntity.java:

package experiment.dataexport;

import java.util.List;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import com.google.appengine.api.datastore.Key;

@PersistenceCapable
public class ParentEntity
{
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    public Key key;

    @Persistent
    public String name;

    @Persistent(defaultFetchGroup = "true")
    public List<ChildEntity> children;
}

Пример вывода XML:

<Parents>
 <Parent>
  <name>Parent 5613</name>
  <key>72001</key>
  <Children></Children>
 </Parent>
 <Parent>
  <name>Parent 1237</name>
  <key>73001</key>
  <Children></Children>
 </Parent>
</Parents>

(В каждом узле <Children> должно быть несколько <Child> элементов, нозагрузчик получает None вместо правильного списка детей)

...