Несколько таблиц для одного класса в JDO (GWT) - PullRequest
2 голосов
/ 19 ноября 2010

У меня есть класс данных, который я сохраняю, используя JDO в GWT, и у меня есть требование для хранения двух наборов одних и тех же классов отдельно, один набор является необработанными данными, а другой объединен и обработан.
Есть ли простойспособ сделать это, попытался найти его в документах без удачи.

Спасибо, Арон.

Ответы [ 2 ]

2 голосов
/ 20 ноября 2010

Нет. Ни JDO, ни JPA не поддержали бы такую ​​вещь. Очевидно, что вы могли бы создать подкласс класса и иметь подкласс для объединенных / обработанных данных и сохранить их в своей собственной таблице

1 голос
/ 23 ноября 2010

В качестве обновления, учитывая, что существует несколько способов попытаться создать подкласс или внедрить данные в другом классе, многие из которых не очень хорошо работают (в GWT), вот две схемы, которые работают.В первом случае основные функции заключаются в том, что первичный ключ находится в базовом классе, а стратегия наследования - SUBCLASS_TABLE.Обратите внимание, это означает, что BaseData не может быть сохранен.Второй механизм показан ниже.В нем базовый класс представляет собой обычный класс, который можно сохранить, а производный класс имеет стратегию наследования customStrategy = "complete-table"

1)

@PersistenceCapable

@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)

public class BaseData  
{
    @PrimaryKey

    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    public Long id;

    // scan data
    @Persistent
    public String Data1 = "";
    //  etc...
}

@PersistenceCapable
public class ProcessedData  extends BaseData
{
    // No key
    // Thats it
}

@PersistenceCapable
public class RawData  extends BaseData
{
    // No key
    // Thats it
}

2)

@PersistenceCapable
@Inheritance(customStrategy = "complete-table")

public class ProcessedData  extends RawData 
{
// thats it
}

@PersistenceCapable
public class RawData 
{
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    public Long id;

    @Persistent
    public String Data1 = "";

    // ...
}
...