@EmbeddedオブジェクトのリストをGAE-JDOに保存する方法は?

私は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 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 答え

GAE/J docsのどこにも、埋め込み可能なオブジェクトのコレクションの格納がサポートされているとは言えません。単に join tables などのものが存在しないため、GAE/Jに格納されます。それらの要素を格納するべきだと思うところを考えてみましょう。あなたが所有者と同じテーブル内にあることを意味するならば、それはあなたが@Serializedを持っている理由です。

PSこれらのフィールドに@Persistentは必要ありません。それらはすべての主要なタイプに対して永続的なものになります。

1
追加された
私の答えを落とす誰かのニース。おそらく彼らはまた、彼らがこの答えでこのような問題であったことを指摘し、それを修正しようとすることもできました。ちょっと考えました。または、誰かがここに隠れた議題を持っているのでしょうか?おそらくOracleのために働く?
追加された 著者 DataNucleus,
はい、私は埋め込み可能なオブジェクトのコレクションが所有者のテーブルに格納されることを期待しています。 @Serializedはどのように使用しますか?子オブジェクトのリストをシリアル化し、所有者のテーブルにBLOBとして格納する必要がありますか?
追加された 著者 KenSV,