Эй, ребята, мой вопрос о сохранении сущности в JDO. Я создал класс StoredOPDSFeed, члены которого сохраняются правильно. Однако ни один из его объектов-членов не сохраняется правильно. Класс выглядит следующим образом:
@PersistenceCapable
public class StorableOPDSFeed implements Serializable {
private static final long serialVersionUID = 1L;
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private String primaryKey;
@Persistent
private String locale;
@Persistent
private Date parseDate;
@Persistent
private String title;
@Persistent
private String href;
@Persistent
@Element(dependent = "true")
private ArrayList<OPDSEntry> entries;
@Persistent
@Element(dependent = "true")
private ArrayList<OPDSLink> links = new ArrayList<OPDSLink>();
@Persistent
@Embedded
private SearchDescription searchDescription;
@Persistent
private boolean isStart = false;
@Persistent
@Element(dependent = "true")
private ArrayList<OPDSFacetGroup> facet_groups = new ArrayList<OPDSFacetGroup>();
... and accessors, etc.
}
Все простые элементы, такие как locale, title, href и т. Д., Сохраняются правильно. Однако все сложные, такие как searchDescription, не отображаются в хранилище данных. Там нет ни ссылки на них, ни внешнего ключа, ничего. Как будто они полностью игнорируются. У кого-нибудь есть идеи почему?
По запросу, вот код для OPDSLink:
@PersistenceCapable
public class OPDSLink implements Serializable {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String encodedKey;
private static final long serialVersionUID = 1L;
@Persistent
private String href;
@Persistent
private String rel;
@Persistent
private String type;
@Persistent
private String price;
@Persistent
private String currency;
@Persistent
private String dcformat;
@Persistent
private String title;
... and accessors, etc.
}