2011-08-23 63 views
7

虛擬問題。獲取物品實體密鑰

我創建了我的POJO Objectify實體(例如「Category」)並將它保留下來。

然後我通過查詢檢索它。

我想以一對一的關係使用它,例如,想要將我的類別設置爲一個或多個「產品」。

我都會有這樣的在我的「產品」的代碼:Key<Categoria> categoria;

因此問題是:我怎麼能找到我的檢索實體對我產品設置它的關鍵?

回答

9

我通常添加額外的方法:

@Transient 
Key<Categoria> getKey() { 
    return Key.create(Categoria.class, id); 
} 

,並用它在那裏,它需要:

anCategoria.getKey() 
+3

在Objectify 4中,它給了我一個錯誤:構造函數不可見。 – Tom

+2

'Key.create(Categoria.class,id)' - 比構造函數稍微方便一些。 – stickfigure

+0

謝謝,已更新爲Objectify 4 –

13

對於客觀化4用途:

public Key<Foo> getKey() { 
    return Key.create(Foo.class, id); 
} 

如果實體有一個@Parent

public Key<Bar> getKey() { 
    return Key.create(parentKey, Bar.class, id); 
} 
+0

用戶應注意,如果定義了@Parent,則必須使用父鍵來生成條形鍵。 – Dula

+0

有沒有辦法在不爲每個實體編寫新代碼的情況下獲得密鑰? – Raymond

1

在物化4 Key類有這個方法:

public static <T> Key<T> create(T pojo) 

因此,如果您已經閱讀實體從數據存儲(在這個例子叫category),你可以叫

product.categoria = Key.create(category);