On 03/06/2007, at 6:50 PM, Andrus Adamchik wrote:
One note - in Cayenne discriminator column is implemented via a
more generic entity qualifier expression (e.g. it can match
multiple columns or use some custom comparison condition). This
approach generally prevents a simplification of a mandatory
discriminator column on a root class, although we may actually work
around it and start by implementing a simplified case (i.e. support
entity qualifiers in the form "attribute = constant" on all
subentities).
I am still entertaining the idea that we can support vertical
inheritance without a designator column, and I don't think that
having such column in place is such a big shortcut in
implementation. After all the logic will be the same as with
horizontal inheritance - sublcass criteria is an existence of a row
in the subclass table).
My understanding of the need for a discriminator column (from eof) is
- it's only necessary if the parent is not abstract, and
- you plan on fetching/instantiating the parent without needing to
fetch the characteristics of the sub-entities so as to distinguish them.
That seems to lend itself to utilising the current single-table
implementation where such a column is used.
How do you envisage this working otherwise?
with regards,
--
Lachlan Deck