Objectify (2.2.3) 似乎不想处理 @Embedded 字符串列表,尽管所有文档似乎都说它应该是可能的。字符串的处理就像它们是需要转换的自定义对象一样。最小的例子:
public class Test {
@Id public Long id = null;
@Embedded private List<String> strings = new ArrayList<String>();
private Test() {}
public Test(String[] in) {
for (String s : in) {
strings.add(s);
}
}
此类的一个实例被保存为:
Key: 7
ID/Name: ahpzY2hlZHVsZS13aXRoLXlvdXItZnJpZW5kc3IKCxIEVGVzdBgHDA
strings.hash: [0, 0]
请注意,字符串是通过哈希保存的,它是字符串中唯一的非最终字段
此代码将失败:
ObjectifyService.register(Test.class);
Test t = new Test(new String[] { "aa", "bb" });
Objectify ofy = ObjectifyService.begin();
ofy.put(t);
Test t2 = ofy.get(Test.class, t.id); //<-- fails with IllegalAccessException: Private fields can not be set on JRE classes.
我在这里做错了吗?不支持嵌入的字符串列表吗?