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.
Я что-то здесь не так делаю?Не поддерживаются ли встроенные списки строк?