2011-04-20 46 views
2

Objectify(2.2.3)似乎不想處理@Embedded字符串列表,儘管所有文檔似乎都認爲它應該是可能的。 字符串的處理就好像它們是需要轉換的自定義對象一樣。 的小例子:Objectify無法保存@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. 

難道我做錯了什麼嗎?是否不支持嵌入的字符串列表?

回答

2

通過objectify-appengine google group瞭解到:簡單類型列表不應標記爲@Embedded。他們將堅持沒有這種表示法。 @Embedded僅適用於複雜的用戶類型。該文件將被更新,以使該母馬清晰。

相關問題