On May 30, 2007, at 7:27 AM, Lachlan Deck wrote:


* Changes to the validation rules to allow ObjEntity with no db entity for abstract entities

The question of 'isAbstract' is merely a question of 'can instances of this entity be instantiated'?

Certainly changes to validation rules are necessary. But it is possible for an entity to be both abstract whilst having an associated db entity (e.g., vertical inheritance where the developer doesn't desire to instantiate instances of parent entity).

Right. I guess ObjEntity without a DbEntity feature can be tucked onto one of the inheritance tasks.


* maybe also some runtime checks for abstract entity (???)

The only runtime checks I can foresee at the moment are:
- a CayenneRuntimeException for attempting to do a fetch on an ObjEntity that has no associated db entity.

Other logic will need to be in place that determines how deep the fetch is. e.g., if there's a SelectQuery on a parent entity that's abstract then this would imply a deep fetch (i.e., of sub-entity instances). If however the parent is not abstract then (even for horizontal inheritance) instances of the parent are fetched (resolving attributes appropriately from children for horizontal).

This may also be a part of the inheritance discussion, but here is a one thing to note: SelectQuery (and other queries) supports "setResolvingInherited", which is a deep-fetch vs. no-deep-fetch flag.

Andrus

Reply via email to