Это относится к моему предыдущему вопросу , но с новой информацией.
Я пытаюсь настроить массовый загрузчик для загрузки данных из моего приложения 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
вместо правильного списка детей)