我正在尝试在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中对这些数据建模的“正确”方法是什么?
答案 0 :(得分:1)
在GAE / J文档中没有任何地方说它们支持存储可嵌入对象的集合;只是因为没有像连接表这样的东西,它们将被存储在GAE / J中。考虑一下您认为应该存储这些元素的位置。如果你的意思是与所有者在同一个表中,那就是为什么你有@Serialized。
PS你在这些领域不需要@Persistent;它们默认为所有主要类型的持久性。