Проведение разных экземпляров одного и того же класса в хранилище данных GAE - PullRequest
0 голосов
/ 05 апреля 2011

Чрезвычайно запутанный заголовок, я знаю.

Здравствуйте, я сталкиваюсь с некоторыми странными проблемами здесь.

У меня есть класс свойств, такой как

@PersistenceCapable 
public class Property implements Serializable
{
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
    private String key;
        //...
}

Теперь у меня также есть два других класса.Давайте назовем их Фабрика и Магазин.Они оба имеют свойства, например:

@PersistenceCapable 
public class Factory implements Serializable
{
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
    private String key;
    @Persistent
    private String m_Name;
    @Persistent
    private List<Property> m_FactoryProperties;
}

и

@PersistenceCapable 
public class Store implements Serializable
{
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
    private String key;
    @Persistent
    private String m_Name;
    @Persistent
    private List<Property> m_StoreProperties;
}

Хотя это выглядит просто, оно не будет работать.И я понятия не имею, почему, я предполагаю, что это связано с индексом, так как в средстве просмотра данных GAE есть либо m_FactoryProperties_INTEGER_IDX, либо m_StoreProperties_INTEGER_IDX, когда я просматриваю объекты свойств.(Они никогда не появляются одновременно).

(Не работает, если я переименую списки в m_Propertys) ...

Разве это невозможно?Я мог бы создать класс FactoryProperty- и StoreProperty, но это было бы ужасно неправильно.Другое решение, о котором я думаю, - это создание суперкласса, который содержит список Propertys, а затем наследует Factory и Store от этого класса, и я ДОЛЖЕН сделать так, чтобы они разделяли индекс, я думаю ... Должен ли я просто пропустить собственные отношения и перейти кunowned?

Я чувствую, что могу упустить что-то важное.Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 05 апреля 2011

В собственности отношения могут принадлежать только одному классу. вам также следует добавить ссылку на свойство в родительском классе, тогда

ех.

Proprety

@Persistent
private Store store;

магазин

@Persistent(mappedBy = "store")
private List<Property> protperties;

Если вы хотите использовать одни и те же свойства в классе магазина и фабрики, вам нужно использовать решение для неизвестных отношений.

Завод

@Persistent
private Set<Key> properties;

магазин

@Persistent
private Set<Key> properties;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...