2011-08-23 13 views
7

Pregunta ficticia.Obtiene una clave de Objectify Entity

Creé mi entidad POJO Objectify (por ejemplo, "Categoría") y la conservo.

Luego lo recupero mediante una consulta.

Quiero usarlo en una relación de uno a mayo, p. Ej. quiero configurar mi categoría a uno o más "Productos".

voy a tener esto en mi "producto" código "s: Key<Categoria> categoria;

Entonces la pregunta es: ¿cómo puedo encontrar la clave de mi entidad recuperada para colocarlo en mi producto?

Respuesta

9

generalmente estoy añadiendo un método adicional:

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

y utilizarlo donde necesitaba:

anCategoria.getKey() 
+3

En Objectify 4 me da un error: ese constructor no es visible. – Tom

+2

'Key.create (Categoria.class, id)' - ligeramente más conveniente que el constructor. – stickfigure

+0

gracias, actualizado a Objectify 4 –

13

Para Objectify 4 uso:

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

O si la entidad tiene un @Parent

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

Los usuarios deben tener en cuenta que si se define un @Parent, la clave principal DEBE utilizarse para generar la clave de barra. – Dula

+0

¿Hay alguna forma de obtener la clave sin escribir un código nuevo para cada entidad? – Raymond

1

La clase Key en Objectify 4 tiene este método:

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

así, si ya ha leído la entidad (llamada category en este ejemplo) desde el almacén de datos, sólo puede llamar a

product.categoria = Key.create(category); 
Cuestiones relacionadas