2013-02-20 14 views
5

Attualmente, ho alcune classi di modelli astratti che hanno comportamenti comuni per altri modelli concreti. Ad esempio, un SearchableModel.class astratto potrebbe essere ereditato da altri modelli concreti.Come utilizzare l'annotazione di Objectify quando si condividono modelli astratti comuni tramite l'ereditarietà?

Quando si utilizza Objectify, vorrei annotare la classe SearchableModel, perché richiede la persistenza dei propri campi. Tuttavia, non mi interessa fare alcun tipo di query polimorfiche e non desidero alcuna entità di tipo "SearchableModel" nel datastore, solo i tipi di classi concrete che ereditano da SearchableModel. Come devo procedere con le annotazioni @ Entity/@ EntitySubClass?

Se annoto sia le classi astratte che quelle concrete con @Entity e persistono/caricano l'istanza delle classi concrete, funzionerà come previsto?

So che potrei provarlo da solo, tuttavia, non ho ancora impostato l'oggettivazione. Sto ancora cercando di capire come potrebbe essere usato con il mio modello attuale.

Anche altri suggerimenti su come organizzare questo tipo di dipendenza sono apprezzati.

Grazie.

risposta

5
  • Non utilizzare @EntitySubclass.
  • Estendi dal tuo SearchableModel.
  • Inserisci @Entity sulle classi concrete (di primo livello).

Questo ti darà la voglia che vuoi. Puoi inserire campi comuni (con annotazioni Objectify, incluso @ Id/@ Parent) e comportamenti nella classe base. Non ci sarà alcun polimorfismo del datastore e ogni @Entity avrà il proprio tipo di datastore.

+0

C'è documentazione da qualche parte? http://code.google.com/p/objectify-appengine/wiki/Entities#Polymorphism sembra contraddire questo, ma è anche sotto la sezione per quando * si * vuole mescolare sottoclassi diverse. – aij