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.
私はここで何か間違ったことをしていますか?文字列の埋め込みリストはサポートされていませんか?