gpt4 book ai didi

java - Objectify 无法保存@Embedded 字符串列表

转载 作者:行者123 更新时间:2023-11-30 09:49:31 24 4
gpt4 key购买 nike

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.

我是不是做错了什么?不支持嵌入的字符串列表吗?

最佳答案

正如通过 objectify-appengine google group 了解到的:简单类型的列表不应标记为@Embedded。它们将在没有该符号的情况下保留下来。 @Embedded 仅适用于复杂的用户类型。将更新文档以使这一点更加清晰。

关于java - Objectify 无法保存@Embedded 字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5735108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com