IMO, "abstract" is limited to its Java definition, and is of no consequence to the runtime inheritance processing (note that 'resolvingInherited' query property is true by default). So the most important aspect of it is generating a corresponding Java class with an "abstract" keyword, so that Java could throw on any attempts to instantiate it.

Andrus



On May 31, 2007, at 3:32 AM, Aristedes Maniatis wrote:


On 31/05/2007, at 2:40 AM, Kevin Menard wrote:

I'm clearly showing my ignorance on the matter here, but what does it
mean for an object to know that it's abstract? Isn't that a property of
the class?  What happens when you subclass the ObjEntity?

Cayenne will need to know this information. For instance, you might have inheritance with an abstract superclass Person. Then performing a query on that class, Cayenne will need to automatically return objects of Student and Tutor subclasses and not the Person superclass. Effectively the flag "setResolvingInherited" will be switched on automatically.

If nothing else, this information needs to be stored in the Datamap and the logical place is in the ObjEntity itself.

When we get to vertical inheritance there will be at least one other property added to the ObjEntity: the name of the relationship used to find the superclass.

Ari Maniatis



-------------------------->
Aristedes Maniatis
phone +61 2 9660 9700
PGP fingerprint 08 57 20 4B 80 69 59 E2  A9 BF 2D 48 C2 20 0C C8



Reply via email to