Как сохранить список @Embedded объектов в GAE-JDO? - PullRequest
1 голос
/ 25 ноября 2011

Я пытаюсь сохранить список встроенных объектов в GAE / JDO. Я получаю исключение Datanucleus:

Поле "Product.shippingOptions" имеет тип "java.util.List", но было указано как встроенное. DataNucleus не поддерживает встраивание этого типа. Ваш встроенный тип должен быть PersistenceCapable.

Вот упрощенная версия моих занятий:

@PersistenceCapable(identityType=IdentityType.APPLICATION, detachable="true")
public class Product
{
    @PrimaryKey
    @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) 
    private Long id;

    @Persistent(defaultFetchGroup = "true")
    @Embedded
    private List<ShippingOption> shippingOptions;
}

@PersistenceCapable
@EmbeddedOnly
public class ShippingOption
{
    @Persistent
    private String shippingType;

    @Persistent
    private int price;

    @Persistent
    private String currency;
}

Я не хочу использовать отдельную таблицу / вид для хранения параметров доставки для каждого продукта, потому что параметр доставки также должен быть сохранен с объектом Order при его создании.

Есть ли способ сохранить список дочерних объектов в GAE / JDO? Если нет, каков «правильный» способ моделирования этих данных в GAE / JDO?

1 Ответ

1 голос
/ 25 ноября 2011

Нигде в документах GAE / J не говорится, что они поддерживают хранение Коллекции встраиваемых объектов; просто потому, что нет таких вещей, как объединение таблиц , где это будет храниться в GAE / J. Подумайте, где, по вашему мнению, следует хранить эти элементы. Если вы имеете в виду в той же таблице, что и владелец, то именно поэтому у вас есть @ Serialized.

PS Вам не нужно @Persistent в этих полях; по умолчанию они постоянны для всех основных типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...