0
我一直在使用Objectify4在Google數據存儲上持續使用泛型集合。例如。持久集合<T>在GAE上使用Objectify4
@Entity
class AnimalInfo
{
@Id
String id;
Collection<Animal> animals;
}
@EntitySubClass
class Cat extends Animal
{
String name;
}
@EntitySubClass
class Dog extends Animal
{
String name;
}
@Entity
class Animal
{
@Id
String id;
}
我該如何堅持AnimalInfo類並再次檢索它。我已經嘗試過: objectify.save().entities(animalInfo).now();
但在取回它時:objectify.load().type(AnimalInfo.class).id(animalInfo.id).get();
沒有name
字段對應於擴展類Cat或Dog。
這也可能是合乎邏輯的,因爲動物類沒有字段name
。但是,我怎樣才能使這個工作?通用接口IAnimal(代替Animal類)在設計上是更好的解決方案,但它不適用於Objectify,因爲它需要具體類型。
上述問題的解決方案?
在此先感謝。
Shaun
感謝您的回覆。這意味着'動物'集合只會引用數據存儲。我如何在它內部的動物的內存中的實例(沒有堅持它)?我可以通過讓第二個Collection僅僅具有內存中的'Animals'並且在常規集合更新時更新Ref集合來想辦法解決這個問題?我不認爲這是一個好的解決方案。有任何想法嗎? – Shaun 2013-04-26 10:04:29
Objectify目前不支持@ Embed對象中的多態。如果你想要一個現在可以工作的原始解決方案,你可以使用@Serialize。 – stickfigure 2013-04-26 19:21:37