假设我已经使Objectify4与我的项目一起工作(虽然我仍在努力使它工作)是否可以像这样坚持一个带有Map字段的Entity:
class Foo {
Map<String, Object> map;
public Foo() {}
public Foo(Map map) {
this.map = map;
}
}
基本思想是能够存储/保持&#34;泛型&#34;字段可以是
例如我可以存储这个:
map.put("uid:sarah:fname", "Sarah");
persist(new Foo(map));
或者
map.put("uid:sarah:age", 25);
persist(new Foo(map));
Objectify甚至可以实现这一点吗?还是App Engine?
答案 0 :(得分:1)
这将与Objectify4一样,有几点需要注意:
Object
值根本不会被翻译;它将是数据存储所接受的任何内容。 1是因为这最终被存储在原始实体中field.keyname
(可能有几层“。”分隔嵌入字段)。
2是因为您正在删除任何类型信息,因此Objectify只是将Object视为原样。就像你直接使用低级api一样;您只能存储基元或基元集合。没有数组,当然也没有地图。收藏总是以列表的形式返回。数字总是以长的形式返回,无论它们存储的大小如何。还有其他一些古怪的行为。
如果您真的想要这种行为,可以创建一个自定义的TranslatorFactory,它将在运行时内省类型并执行您想要的任何操作。然而,这是非常先进的,需要对现有翻译人员进行一些研究。我们可以帮助您Google Group; stackoverflow可能不是讨论的正确位置。