Hi Shrikrishna ,
Im not sure about Objectify but Twig supports storing and retrieving
Polymorphic references. Your example could be persisted out-of-the-
box with no extra configuration.
Also Twig does handle querying on VehicleType - although you say that
this is not yet a requirement.
Currently to query across all vehicle types you would need to issue
multiple queries and join them. But this is simple even when your
results are sorted using the support class SortedMergeIterator.
BTW, to fully support polymorphic queries is actually quite a simple
extension that I just haven't had the need for yet and so haven't
written. If you were willing to hack a patch I would be happy to give
you some pointers where to start.
http://code.google.com/p/twig-persist/
John
On 5 Feb 2010, at 18:45, Shrikrishna Shrin wrote:
Hi,
I am developing an application that requires persisting of different
object categories that are all subclasses of a specific type. Say I
have a super class Vehicle and two subclasses Car extends Vehicle
and Ship extends Vehicle. Ideally what I would like to do is to be
able to query across all Vehicle objects as well as Car and Ship
objects separately.
It looks like the PolyModel class from the app engine Python API
does this ( http://code.google.com/appengine/docs/python/datastore/polymodelclass.html
or http://code.google.com/appengine/articles/polymodel.html)
However, from the following thread it seems like this is not (yet?)
supported in the Java API:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/99f9b92322ccf862/7b4a53d780a033cf?lnk=gst&q=PolyModel+java#7b4a53d780a033cf
To get around this *limitation* I do something like this
class Vehicle {
String id;
............
............
String vehicleType; // indicates what the vehicle type is, eg:
Car / Ship.
Text vehicleData; // a blob of text that is a String
representation of a JSONObject that contains info specific to a
vehicle type.
}
I am aware that one immediate flaw in my approach is that you cannot
query by vehicleType specific fields contained in the vehicleData
blob. This is *NOT* important for my current app (I only need to
query across vehicle properties but the view on the client side
depends on the vehicleType). However, I am interested in knowing if
it is possible to get around this?
The front end for my app uses GWT and basically what it does is it
gets Vehicle objects via RPC and triggers the corresponding
presenter & view based on the vehicleType. Each presenter in turn
knows what to do with the corresponding vehicleData JSON blob.
Am currently using Objectify (http://code.google.com/p/objectify-appengine/
) for persistence but there doesn't seem to be any built-in support
for polymorphism as yet.
Thanks,
Krishna
--
You received this message because you are subscribed to the Google
Groups "Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com
.
To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com
.
For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en
.
--
You received this message because you are subscribed to the Google Groups "Google
App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.