2013-02-20 3 views
5

Momentan habe ich einige abstrakte Modellklassen, die gemeinsame Verhaltensweisen für andere konkrete Modelle haben. Zum Beispiel könnte eine abstrakte SearchableModel.class von anderen konkreten Modellen geerbt werden.Wie verwende ich Objectifys Annotation, wenn ich gemeinsame abstrakte Modelle durch Vererbung teile?

Wenn ich Objectify verwende, möchte ich die SearchableModel-Klasse annotieren, da es die Beständigkeit eigener Felder erfordert. Ich bin jedoch nicht an irgendwelchen polymorphen Abfragen interessiert, und ich möchte keine Entitäten vom Typ "SearchableModel" im Datenspeicher, sondern nur die Arten konkreter Klassen, die von SearchableModel erben. Wie sollte ich mit den @ Entity/@ EntitySubClass-Annotationen fortfahren?

Wenn ich sowohl die abstrakten als auch die konkreten Klassen mit @Entity annotieren und die Instanz von konkreten Klassen beibehalten/laden werde, wird es wie erwartet funktionieren?

Ich weiß, ich könnte es selbst testen, aber ich habe noch nicht objektivify Setup. Ich versuche immer noch herauszufinden, wie es mit meinem aktuellen Modell verwendet werden könnte.

Irgendwelche anderen Vorschläge, wie man diese Art von Abhängigkeit organisiert, wird auch geschätzt.

Vielen Dank.

Antwort

5
  • Verwenden Sie nicht @EntitySubclass.
  • Erweitern Sie von Ihrem SearchableModel.
  • Setzen Sie @Entity auf Ihre (obersten) konkreten Klassen.

Dies wird Ihnen wollen Sie wollen. Sie können allgemeine Felder (mit Objectify-Anmerkungen, einschließlich @ Id/@ Parent) und Verhaltensweisen in der Basisklasse einfügen. Es wird keinen Datenspeicher-Polymorphismus geben und jeder @Entity wird seinen eigenen Datastore-Typ haben.

+0

Gibt es dafür irgendwo Dokumentation? http://code.google.com/p/objectify-appengine/wiki/Entities#Polymorphism scheint dem zu widersprechen, aber es ist auch unter dem Abschnitt, wenn du * * * verschiedene Subklassen mischen willst. – aij